Автор: Джо Берри (Joe Berry)
Как и у многих из вас, у меня есть цифровая музыкальная коллекция в mp3 файлах. Она появилась, когда я начал оцифровывать CD-диски. Сейчас же, в основном, я покупаю музыку в интернет. С тех пор, как я стал тратить на неё достаточно большие суммы, мне всё больше не хочется её потерять. На сегодня моя коллекция имеет размер примерно 25Гб. В этой статье описывается моя стратегия по сохранению и управлению моей музыкальной коллекцией.
Я храню свою музыку на компьютере с Linux, с запущенной Samba и NFS, что позволяет прослушивать её как на компьютере с Windows, так и с Linux и Unix, которые имеются у меня дома. В основном я работаю за ноутбуком с установленной Ubuntu 8.04. Когда я дома, я получаю доступ к музыкальному серверу по NFS и слушаю мою коллекцию через Rhythmbox. Но иногда мне приходится путешествовать, и мне очень важно иметь доступ к моей музыке. Поэтому, я приобрёл недорогой, переносной жёсткий USB диск 160Гб ($99 US), который обеспечил меня как резервным копированием моей коллекции, так и возможностью слушать музыку, когда я нахожусь вне дома.
Есть множество способов создания резервных копий файлов. Множество статей уже опубликовано, а многие другие ещё будут опубликованы. Я не обещаю, что мой способ является самым лучшим. Но как бы то ни было, он отвечает моим требованиям и, может быть, угодит и вашим.
Как я уже говорил, я часто пополняю свою коллекцию, а иногда и удаляю из неё некоторые композиции. И мне не нужна такая схема резервного копирования, которая просто копирует новые файлы в некоторую резервную папку. Если я удаляю композицию, я хочу, чтобы она исчезла и из резервной папки. Мне нужен простой механизм, который будет чётко управлять и поддерживать точную копию моей коллекции (удаляя некоторые композиции и добавляя новые). Мне также не хочется, чтобы это занимало длительное время (помните, у меня 25Гб музыки). Решением, которое выбрал я, стала программа rdiff-backup. Само приложение и документация на него расположены на домашней странице:*www.nongnu.org/rdiff-backup/. *Менеджер пакетов Synaptic делает установку rdiff-backup очень простой. Просто сделайте поиск по rdiff-backup и установите его (заметка: также требуется установка Python).
Наилучшее описание программы rdiff-backup даёт сам автор: “rdiff-backup дублирует одну директорию в другую, возможно даже по сети. Целевая директория является копией директории источника, но также дополнительные обратные изменения сохраняются в специальных поддиректориях, поэтому вы всегда сможете восстановить давно утерянные файлы. Идея заключается в том, чтобы комбинировать все достоинства зеркального и инкрементального резервного копирования. rdiff-backup также сохраняет поддиректории, жёсткие ссылки, dev файлы, права доступа, uid/gid права, время модификации, расширенные атрибуты, списки доступа и ответвления ресурсов. Также rdiff-backup может управлять пропускной способностью канала на манер rsync. Поэтому, вы можете использовать rdiff-backup совместно с ssh, чтобы безопасно создавать резервную копию жёсткого диска на удалённой машине, при этом будут переданы только различия в файлах. И, наконец, rdiff-backup лёгок в использовании и имеет удобные настройки по умолчанию”.
Чтобы автоматизировать запуск rdiff-backup, я создал скрипт:
1. #!/bin/bash 2. LOG=/home/jberry/rdiff-backup-output.txt 3. echo "Starting rdiff-backup" >> $LOG 4. date >> $LOG 2>&1 5. # make sure the portable drive is mounted 6. df /media/* | grep PASSPORT 7. if [ $? -eq 1 ] ; then 8. echo "No portable drive -- can't continue" >> $LOG 9. exit 1 10. fi 11. # make sure fedora's music is mounted 12. df /music | grep fedora 13. if [ $? -eq 1 ] ; then 14. # try to mount 15. echo "mounting the fedora music dir" >> $LOG 16. /home/jberry/util/mount-music 17. # now make sure the mount was successful 18. if [ ! -e /music/README.txt ] ; then 19. echo "Unsuccessful mount of music from fedora" >> $LOG 20. exit 1 21. fi 22. fi 23. /usr/bin/rdiff-backup --print-statistics /music /media/WD\ PASSPORT/music >> $LOG 2>&1 24. echo "rdiff-backup is finished at " >> $LOG 25. date >> $LOG 2>&1
Строка №2 определяет выходной файл для хранения истории ежедневного запуска этого скрипта. Без этого будет трудно разобраться, если возникнут проблемы. Следующие несколько строк просто отмечают временную отметку.
В строках 5-10 скрипт подтверждает, что переносной USB диск присоединен. Если же он не присоединен, то нет причин продолжать выполнение скрипта дальше. В зависимости от специфики вашего жёсткого диска, в строке №6, возможно, необходимы изменения. Чтобы определить, какую строку вам использовать для вашего диска, подсоедините диск и запустите окно терминала (Приложения → Системные → Терминал). Введите команду “df”, и вы должны увидеть что-то похожее на
$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 36835176 27133928 7830080 78% / varrun 512916 296 512620 1% /var/run varlock 512916 0 512916 0% /var/lock udev 512916 60 512856 1% /dev devshm 512916 164 512752 1% /dev/shm lrm 512916 38176 474740 8% /lib/modules/2.6.24-18-generic/volatile /dev/loop0 510984 104716 406268 21% /joe0 /dev/sdb1 156250144 117254752 38995392 76% /media/WD PASSPORT
Заметка о последней строке. Она касается моего переносного диска. У вас, возможно, будет стоять другие значения после строки “/media/”. Строка №6 ищет в выводе команды “df” значение параметра “PASSPORT”. Если такое значение не найдено, скрипт завершается. Измените эту строку под свои параметры.
Следующая часть скрипта определяет доступность источника с музыкой. Мой музыкальный сервер является Linux системой и называется 'fedora'. Если директория fedora/music не присоединена, скрипт присоединит её, запустив другой скрипт mount-music (строка 16). В этом скрипте всего лишь одна строчка:
mount -o ro fedora:/joe0/music /music
Если ваша музыкальная коллекция находится на вашей локальной системе Ubuntu, то вы просто можете удалить строки 11-22. Вам потребуется изменить строку 23, строку, запускающую rdiff-backup, для определения местонахождения вашей музыкальной коллекции. Параметры, которые я указал (в порядке их появления):
print-statistics
Это означает, что будет показана различная статистика.
/music
Директория где хранится музыка.
/media/WD\ PASSPORT/music
Эта директория определяет, где будет храниться резервная копия коллекции. Есть множество других параметров rdiff-backup. Введите:
man rdiff-backup
чтобы узнать, какие ещё команды доступны. Также вы можете посетить сайт с подробной документацией.
Существуют две вещи, о которых, как мне кажется, я должен упомянуть. Первая - это особенность, о которой я ничего не знал, пока не обнаружил её в FAQ. Когда я заглянул на мой диск с резервными копиями, я испытал некоторое беспокойство. Вот приблизительный вид структуры директории, который я увидел.
Обратите внимание, что каждый исполнитель и альбом (пятый исполнитель Alison Krauss и его альбом “Now That I've Found You”) имеет забавные символы вместо буквы в верхнем регистре. В частности, символ “;065” находится на месте буквы “A”. В FAQ это объясняется так:
Когда производится резервное копирование с регистро-зависимой файловой системы на регистро-независимую (такую как Mac's HFS+ или Windows's FAT32 или NTFS), rdiff-backup удаляет символы в верхнем регистре, чтобы избежать случая перезаписи уже имеющихся файлов. Если файловая система является регистро-сохраняющей, но не регистро-независимой - это означает, что файл с именем «Foo» равнозначен именам «Foo», «foo», «foO», «fOo» и т.д. Файловые системы, такие как ext3 в Linux, всё же воспринимают такие файлы, как разные копии файла.
Мой переносной диск отформатирован под файловую систему FAT32 (я хочу, чтобы он также был читаемым под Windows системами). На самом деле эта проблема не существенна. Т.к. все mp3-проигрыватели, например Rhythmbox, используют метаданные mp3 файла, чтобы определить имя исполнителя и альбома; они не используют физические имена файлов ни в каких целях.
Вторая вещь, о которой я должен сказать, возникала всего пару раз за прошедший год или два. Что-то начинает «засоряться», после чего rdiff-backup перестаёт работать. При этом сообщается об ошибке. Опять же в FAQ описано, каким образом можно обойти эту ошибку и перезагрузить процесс резервного копирования. Тут нет ничего серьёзного; нужная информация - это музыка - с ней всё в порядке, но вот файлы поддержки rdiff-backup, в которых записывается, что и когда было скопировано, вот они-то и «засоряются».
Я автоматически запускаю скрипт синхронизации моей музыки в одно и то же время каждый день. Это делается при помощи cron. Мой Crontab выглядит так:
15 9 * * * /home/jberry/util/run-rdiff-backup.sh
Это означает: запустить выполнение rdiff-backup.sh каждый день в 9:15 утра. По случаю, я проверил журнал (см. строку №2 в вышеприведенном скрипте), чтобы убедиться, что все работает правильно. В качестве домашнего задания вы можете улучшить скрипт для отправки по электронной почте уведомлений об имеющихся проблемах с созданием резервной копии.