Синхронизация файлов

Материал из ALT Linux Wiki

Синхронизация локальных файлов и каталогов

Rsync

rsync — быстрый, универсальный инструмент для удаленного (и локального) копирования файлов. Для резервного копирования и синхронизации нескольких каталогов с файлами можно воспользоваться следующей командой:

rsync -avh --del --progress ./dir1 ./dir2 ./dir3 ./backup
Примечание: Чтобы сам резервируемый каталог, а не только его содержимое, был включен в резервную копию, не ставьте слеш / в конце имени этого каталога.

В результате выполнения команды каталоги ./dir1, ./dir2 и ./dir3, вместе со всем их содержимым, будут рекурсивно скопированы в каталог ./backup. Если файлы уже есть в каталоге ./backup, и не были изменены, они будут пропущены.

Дополнительные опции имеют следующие значения:

-a
опция для архивирования, эквивалентна -rlptgoD, согласно описанию, это быстрый способ сказать, что вы хотите рекурсию и хотите сохранить почти все;
-v
увеличить количество выводимой на экран информации о ходе процесса;
-h
выводить числа в удобочитаемом формате;
--del
удалять файлы в каталоге-приемнике, если они были удалены в каталоге-источнике;
--progress
показывать прогресс во время передачи.

ПРИМЕР: Резервное копирование домашних каталогов нескольких пользователей компьютера на внешний жесткий диск

Для резервного копирования данных в домашних каталогах нескольких пользователей выполните команду (понадобятся права root):

su -
rsync -avh --del --progress --exclude='.*' /home/<Пользователь_1> /home/<Пользователь_2> /run/media/<Пользователь_1>/<Имя_USB_HDD>/backup
exit

где /run/media/<Пользователь_1>/<Имя_USB_HDD> — предварительно смонтированный USB HDD или флеш-накопитель.

Дополнительные опции имеют следующие значения:

--exclude='.*'
исключить из резервной копии скрытые файлы и каталоги. Можно рекомендовать эту опцию, если резервное копирование скрытых файлов и каталогов занимает значительное время.

Решение проблем

Проблемы с кодировками в лог-файле

При использовании rsync и перенаправлении вывода ошибок в файл, кириллические символы в тексте ошибок могут быть записаны в формате \#320\#220\....

Например:

rsync -rlptDvh --chmod 770 /mnt/doc/SERVER-1S/ /mnt/1s/ 2> ~/rsync_err

Чтобы просмотреть содержимое файла rsync_err в читаемом формате, можно пропустить его через данный конвейер команд:

cat rsync_err | sed "s/#//g" | xargs -0 printf