1 января 2012 г.

Rsync и создание резервных копий


Под Linux есть уйма всяких утилит для создания резервных копий, консольных и графических. Лично мне нравится rsync - простой и ровный как дверь. Rsync используется мной для создания точной копии или "зеркала" каталогов и содержащихся в них файлов с моего рабочего винчестера на ноуте to внешний винчестер. Раньше пробовал заливать через ssh на второй ПК, но такое извращение не прижилось.


Несмотря на то, что утилита консольная (хотя, для неё есть GUI-морда), можно максимально упростить её использование, сделать не сложнее нажатия на две клавиши и уж точно без запуска терминала. Начнём:

• Напишем bash скрипт (файл с расширением .sh и разрешением на запуск chmod +x script_name) с командами rsync, которые будут синхронизировать нужные мне каталоги на двух независимых носителях. Синтаксис rsync прост:
user# rsync -options /output_directory /input_directory

Полезные в моём случае опции (options) включают в себя:
-n холостой запуск (DRY RUN);
--verbose (-v) выводит подробную информацию о ходе процесса;
--recursive (-r) включать подкаталоги;
--times (-t) копирует информацию о времени модификации. Использовать обязательно, т.к. вся суть rsync сводится к тому, чтобы не копировать файлы, которые не были изменены с момента последнего запуска rsync;
--perms (-p) копирует UNIX права доступа к файлам и каталогам;
--links (-l) копирует ссылки, хотя лично я абсолютно их не использую;
--compress (-z) сжатие передаваемых данных. Можно использовать для экономии трафика при загрузке по сети; в случае с внешними HDD и флешкартами отключать, так как создаёт ненужную нагрузку на ЦПУ;
--delete удаляет файлы и каталоги, которые были удалены в output_directory, иначе в input_directory будут оставаться даже те данные, которых уже нет в источнике.

Примечание: более подробную информацию о работе rsync можно найти в Сети или через man rsync.

В моём случае скрипт будет содержать следующее:
rsync -vrt --delete /home/slack13den/data /media/HDD500GB/backup
rsync -vrt --delete /home/slack13den/music /media/HDD500GB/backup
rsync -vrt --delete /home/slack13den/pictures /media/HDD500GB/backup
rsync -vrt --delete /home/slack13den/zip /media/HDD500GB/backup
rsync -vrt --delete /home/slack13den/video /media/HDD500GB/backup

 Сохраняем sh-скрипт. Теперь задача автоматизировать запуск скрипта. Лично я поступаю следующим образом: делаю бэкап в конце рабочего дня перед отключением ПК. Чтобы не запускать бэкап-скрипт из консоли, повесим скрипт на хоткей. Я рассмотрю стандартные возможности XFCE. Заходим в XFCE-menu > Настройки > Диспетчер настроек > Клавиатура > Вкладка "Комбинации клавиш" > Добавить > Открыть > Указываем на скрипт и назначаем хоткей, в моём случае Alt+b (b значит backup, чтобы легко запомнить)


УХОДЯ, ВЫКЛЮЧАЙ СВЕТ ДЕЛАЙ БЭКАП! Теперь перед выключением ноутбука достаточно нажать Alt+b, чтобы сделать полное резервное копирование данных.