Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
fullcircle:fcm-ru-20:синхронизуй_свою_музыку [2010/03/30 21:32] |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ======HOW-TO====== | ||
- | =====Синхронизуй свою музыку===== | ||
- | ===Автор: Джо Берри (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, я создал скрипт: | ||
- | <code> | ||
- | 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 | ||
- | </code> | ||
- | |||
- | Строка №2 определяет выходной файл для хранения истории ежедневного запуска этого скрипта. Без этого будет трудно разобраться, если возникнут проблемы. Следующие несколько строк просто отмечают временную отметку. | ||
- | |||
- | В строках 5-10 скрипт подтверждает, что переносной USB диск присоединен. Если же он не присоединен, то нет причин продолжать выполнение скрипта дальше. В зависимости от специфики вашего жёсткого диска, в строке №6, возможно, необходимы изменения. Чтобы определить, какую строку вам использовать для вашего диска, подсоедините диск и запустите окно терминала (Приложения → Системные → Терминал). Введите команду “df”, и вы должны увидеть что-то похожее на | ||
- | <code> | ||
- | $ 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 | ||
- | </code> | ||
- | |||
- | Заметка о последней строке. Она касается моего переносного диска. У вас, возможно, будет стоять другие значения после строки “/media/”. Строка №6 ищет в выводе команды “df” значение параметра “PASSPORT”. Если такое значение не найдено, скрипт завершается. Измените эту строку под свои параметры. | ||
- | |||
- | Следующая часть скрипта определяет доступность источника с музыкой. Мой музыкальный сервер является Linux системой и называется 'fedora'. Если директория fedora/music не присоединена, скрипт присоединит её, запустив другой скрипт mount-music (строка 16). В этом скрипте всего лишь одна строчка: | ||
- | <code>mount -o ro fedora:/joe0/music /music</code> | ||
- | Если ваша музыкальная коллекция находится на вашей локальной системе Ubuntu, то вы просто можете удалить строки 11-22. | ||
- | Вам потребуется изменить строку 23, строку, запускающую rdiff-backup, для определения местонахождения вашей музыкальной коллекции. Параметры, которые я указал (в порядке их появления): | ||
- | <code>--print-statistics</code> | ||
- | Это означает, что будет показана различная статистика. | ||
- | <code>/music</code> | ||
- | Директория где хранится музыка. | ||
- | <code>/media/WD\ PASSPORT/music</code> | ||
- | Эта директория определяет, где будет храниться резервная копия коллекции. | ||
- | Есть множество других параметров rdiff-backup. Введите: | ||
- | <code>man rdiff-backup</code> | ||
- | чтобы узнать, какие ещё команды доступны. Также вы можете посетить сайт с подробной документацией. | ||
- | Существуют две вещи, о которых, как мне кажется, я должен упомянуть. Первая - это особенность, о которой я ничего не знал, пока не обнаружил её в FAQ. Когда я заглянул на мой диск с резервными копиями, я испытал некоторое беспокойство. Вот приблизительный вид структуры директории, который я увидел. | ||
- | |||
- | {{:fullcircle:20:wdpassport.png?500}} | ||
- | |||
- | Обратите внимание, что каждый исполнитель и альбом (пятый исполнитель 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 выглядит так: | ||
- | <code>15 9 * * * /home/jberry/util/run-rdiff-backup.sh</code> | ||
- | |||
- | Это означает: запустить выполнение rdiff-backup.sh каждый день в 9:15 утра. По случаю, я проверил журнал (см. строку №2 в вышеприведенном скрипте), чтобы убедиться, что все работает правильно. В качестве домашнего задания вы можете улучшить скрипт для отправки по электронной почте уведомлений об имеющихся проблемах с созданием резервной копии. | ||
- | |||