Это старая версия документа!
rsync
rsync - программа, которая выполняет синхронизацию файлов и каталогов, может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию.
Установка
На примере Debian:
# aptitude install rsync
Копирование
На сервере-приемнике правим /etc/default/rsync. Меняем в строке «RSYNC_ENABLE=false» false на true. Правим (создаем) /etc/rsyncd.conf. Прописываем туда:
log file=/var/log/rsyncd
pid file=/var/run/rsyncd.pid
socket options = SO_KEEPALIVE
и запускаем rsync:
# /etc/init.d/rsync start
rsync-сервер к приему данных готов.
На сервере-передатчике запускаем rsync:
# rsync -e ssh --progress -lzuogthvr --compress-level=9 --delete-after /mydir/sourcedir username@remoteserver:/backupdir/
где:
-e ssh - Использовать SSH для связи.
‑‑progress - Показывать прогресс копирования.
-l - Пересоздавать synlinks, т.е. на удаленном сервере будут созданы симлинки, ссылающиеся на нужное место. Даже если на удаленном сервере этого места не существует - лучше делать так, т.к. при возвращении резервной копии на этом компьютере симлинки станут рабочими.
-z - Использовать сжатие (для экономии трафика). Если много сжимать - копирование может занять много времени. Можно отказаться от этой опции в случае недостаточной мощности процессора.
-u - Режим обновления, т.е. инкрементальное копирование. rsync скопирует только те файлы, которые еще не существуют на удаленном сервере или которые были изменены.
-o - Установить пользователя-владельца скопированного файла таким-же, как и у оригинала.
-g - Установить группу-владельца скопированного файла таким-же, как и у оригинала.
-t - Установить время создания/модификации файла на удаленном сервере такое-же, как и у оригинала. Опция обязательна для инкрементального копирования - иначе время файла на удаленном компьютере установится текущим.
-h - Вывод информации на экран в удобном для человека виде (human-readable).
-v - Verbose-вывод (т.е. расширенная информация в процессе копирования).
-r - Рекурсивное копирование (т.е. все, что находится по указанному пути, включая поддиректории).
‑‑compress-level=9 - Уровень сжатия (0-9)
‑‑delete-after - Изменяет поведение утилиты. По умолчанию, утилита сначала удаляет целевой файл, если он существует, и только потом копирует его замену, что полезно при передаче больших файлов на сервер, на котором слабо со свободным местом. Если же указать ‑‑delete-after - то сначала в temp-директорию будет скачан новый файл, а уже потом будет произведено удаление старого.
/mydir/sourcedir - директория, которая будет скопирована.
username - имя пользователя для подключения на удаленный сервер.
remoteserver - ip-адрес или hostname удаленного сервера.
/backupdir/ - Директория, в которую будет положена копируемая папка (должна существовать).
Восстановление
Обратно скопировать всю директорию (т.е. восстановить из резервной копии) можно так:
# rsync -e ssh --progress -lzuogthvr --compress-level=9 --delete-after username@remoteserver:/backupdir/ /mydir/sourcedir
Как видно, мы просто поменяли местами последние два параметра.