|
|||||||
Резервное копирование при помощи rdiff-backup
Время создания: 19.09.2012 16:49
Текстовые метки: rdiff-backup, linux
Раздел: Компьютер - Linux - Bash - Команды и скрипты
Запись: xintrea/mytetra_syncro/master/base/1348058977kyydqo94ck/text.html на raw.github.com
|
|||||||
|
|||||||
Резервное копирование при помощи rdiff-backup Способов резервного копирования файлов несчётное количество, как, впрочем. и инструментов для его осуществления. Сегодняшней заметкой я хочу обратить ваше внимание на довольно популярную утилиту инкрементного копирования под названием rdiff-backup. rdiff-backup — приложение написанное на Python, обладает большой гибкостью и довольно простое в обращении. Может работать как локально, так и поверх rsync/ssh, предоставляя возможность оптимально использовать каналы передачи данных в случае удалённых бекапов. Среди основных плюшек rdiff-backup можно выделить следующие возможности.
Установка В современных Linux-дистрибутивах rdiff-backup имеется в репозиториях, так что с её установкой у вас не должно возникнуть проблем. В случае же, если вы используете что-то другое, посетите главную страницу проекта, с которой можно скачать исходные коды. Локальное резервное копирование Под «локальным» или «удалённым» здесь и далее понимается получатель резервной копии. Сперва давайте рассмотрим самый простой способ запуска утилиты: $ rdiff-backup <источник> <получатель> Эта команда, как понятно из описания, выполнит резервное копирование из <источник> в <получатель>. Обратите внимание, что в качестве получателя необходимо указывать либо пустой, либо несуществующий каталог, иначе rdiff-backup вежливо вам откажет, что правильно. В режиме по умолчанию rdiff-backup довольно молчалива, и не надоедает диагностическими сообщениями до тех пор, пока не столкнётся с ошибкой. Регулировать разговорчивость утилиты можно при помощи короткой опции '-v' или её длинного аналога '--verbosity'. Значение опции может принимать значения от 0 до 9 (по умолчанию оно равно 3). Например, уровень 4 перед началом процедуры копирования выведет вам сводку опций работы утилиты: $ rdiff-backup -v 4 /var/log ~/log.backup Using rdiff-backup version 1.2.8 Unable to import win32security module. Windows ACLs not supported by filesystem at /var/log escape_dos_devices not required by filesystem at /var/log ----------------------------------------------------------------- Detected abilities for source (read only) file system: Access control lists On Extended attributes On Windows access control lists Off Case sensitivity On Escape DOS devices Off Escape trailing spaces Off Mac OS X style resource forks Off Mac OS X Finder information Off ----------------------------------------------------------------- Unable to import win32security module. Windows ACLs not supported by filesystem at log.backup/rdiff-backup-data/rdiff-backup.tmp.0 escape_dos_devices not required by filesystem at log.backup/rdiff-backup-data/rdiff-backup.tmp.0 ----------------------------------------------------------------- Detected abilities for destination (read/write) file system: Ownership changing On Hard linking On fsync() directories On Directory inc permissions On High-bit permissions On Symlink permissions Off Extended filenames On Windows reserved filenames Off Access control lists On Extended attributes On Windows access control lists Off Case sensitivity On Escape DOS devices Off Escape trailing spaces Off Mac OS X style resource forks Off Mac OS X Finder information Off ----------------------------------------------------------------- Backup: must_escape_dos_devices = 0 Starting mirror /var/log to log.backup В то время как девятый уровень будет сообщать о каждом шаге: $ rdiff-backup -v 9 /var/log ~/log.backup ... Tue Mar 6 04:50:07 2012 Processing changed file wtmp.1 Tue Mar 6 04:50:07 2012 Regular copying ('wtmp.1',) to log.backup/rdiff-backup.tmp.121 Tue Mar 6 04:50:07 2012 Writing file object to log.backup/rdiff-backup.tmp.121 Tue Mar 6 04:50:07 2012 Copying attributes from ('wtmp.1',) to log.backup/rdiff-backup.tmp.121 Tue Mar 6 04:50:07 2012 Setting time of log.backup/rdiff-backup.tmp.121 to 1330553626 Tue Mar 6 04:50:07 2012 Renaming log.backup/rdiff-backup.tmp.121 to log.backup/wtmp.1 Tue Mar 6 04:50:07 2012 Copying attributes from () to log.backup Tue Mar 6 04:50:07 2012 Setting time of log.backup to 1330980760 Tue Mar 6 04:50:07 2012 Touching log.backup/rdiff-backup-data/extended_attributes.2012-03-06T04:50:07+02:00.snapshot Tue Mar 6 04:50:07 2012 Touching log.backup/rdiff-backup-data/access_control_lists.2012-03-06T04:50:07+02:00.snapshot Tue Mar 6 04:50:08 2012 Writing mirror marker log.backup/rdiff-backup-data/current_mirror.2012-03-06T04:50:07+02:00.data Tue Mar 6 04:50:08 2012 Cleaning up Tue Mar 6 04:50:08 2012 Touching log.backup/rdiff-backup-data/error_log.2012-03-06T04:50:07+02:00.data ... Удалённое резервное копирование Этот тип копирования выполнить настолько же просто, как и локальное. Всё, что меняется — это формат указания источника/получателя. Также на удалённой системе должна быть установлена rdiff-backup и работать SSH-сервер. Например следующая команда: $ rdiff-backup -v 5 /var/log backup@my-server.com::/var/backups/log.host123
То же самое будет работать и в обратном направлении, т. е., если вам необходимо выполнить копирование удалённых файлов в локальную систему, просто поменяйте местами источник с получателем в опциях утилиты: $ rdiff-backup -v 5 backup@my-server.com::/var/log /var/backups/logs-my-server.com Получение информации о результатах копирования Обычно многословный вывод команд требуется в период отладки и написания сценариев, не более. Для ежедневного мониторинга результатов работы утилиты желательно иметь лишь краткую сводку. Для этого rdiff-backup предлагает отдельную опцию '--print-statistics': $ rdiff-backup --print-statistics /var/log ~/log.backup Warning: Access Control List file not found --------------[ Session statistics ]-------------- StartTime 1331003360.00 (Tue Mar 6 05:09:20 2012) EndTime 1331003385.71 (Tue Mar 6 05:09:45 2012) ElapsedTime 25.71 (25.71 seconds) SourceFiles 139 SourceFileSize 7006201 (6.68 MB) MirrorFiles 339 MirrorFileSize 16991862 (16.2 MB) NewFiles 65 NewFileSize 1504824 (1.44 MB) DeletedFiles 265 DeletedFileSize 12116918 (11.6 MB) ChangedFiles 74 ChangedSourceSize 5501377 (5.25 MB) ChangedMirrorSize 4874944 (4.65 MB) IncrementFiles 404 IncrementFileSize 2136990 (2.04 MB) TotalDestinationSizeChange -7848671 (-7.49 MB) Errors 0 -------------------------------------------------- Включение исключение файлов «Не все йогурты одинаково полезны» — гласит народная пословица. Это же касается и файлов при резервном копировании. Часто-густо в копируемых каталогах попадаются файлы, размер которых весьма немаленький, а смысла включать их в бэкап нет. Здесь у rdiff-backup (как, впрочем и у всех остальных утилит подобного рода) предусмотрены свои возможности. Используя опцию '--exlude', вы можете исключать отдельные файлы и каталоги: $ rdiff-backup --exclude /proc / backup@my-server.com::/var/backups Эту опцию можно использовать сколько угодно раз: $ rdiff-backup --exclude /proc --exclude /mnt --exclude /tmp / backup@my-server.com::/var/backups Иногда проще указать то, что нужно скопировать, вместо того, что НЕ нужно. Следующая команда скопирует, например, /usr/local/bin, пропустив при этом /usr/bin: $ rdiff-backup --include /usr/local --exclude /usr / backup@my-server.com::/var/backups Обратите внимание, что при множественном использовании опций '--include' / '--exclude' их приоритет зависит от порядка появления в команде. rdiff-backup позволяет использовать шаблоны подобные тем, которые используются в rsync: '**' эквивалентны любому пути, а '*' — любому пути без завершающего слеша. Так, например, следующая команда скопирует /usr/local и /var, но пропустит всё остальное: $ rdiff-backup --include /usr/local --include /var --exclude '**' / /backup Обратите внимание на кавычки. Они нужны, поскольку большинство оболочек обрабатывают звёздочки как спецсимволы, превращая их в маски. Пример чуть посложнее: $ rdiff-backup --include '**txt' --exclude /usr/local/games --include /usr/local --exclude /usr --exclude /backup --exclude /proc / /backup Эта команда скопирует все файлы, имена которых заканчиваются суффиксом 'txt'. Обратите внимание: будут скопированы также все txt-файлы также из каталогов, /usr/local и /backup, поскольку первый --include имеет более высокий приоритет. Вообще, утилита rdif--backup предлагает довольно богатый набор опция для фильтрации файлов, перечислять который в полном объёме нет смысла, поскольку всё «уже украдено до нас» в man-странице приложения. Тем, кто ещё туда не заглядывал, скажу что вы можете фильтровать файлы на основе регулярных выражений, типе самих файлов (символически/жесткие ссылки, сокеты, устройства, FIFO и т. п.), а также на основе файловых списков включений/исключений, при чём сами файловые списки можно передавать через stdin. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|