Инструменты пользователя

Инструменты сайта


wiki:technical:soft:rsync

Rsync

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

Установка

На примере Debian:

# aptitude install rsync

Копирование

На сервере-приемнике правим /etc/default/rsync. Меняем в строке «RSYNC_ENABLE=false» false на true. Правим (создаем) /etc/rsyncd.conf. Прописываем туда:

/etc/rsyncd.conf
log file=/var/log/rsyncd
pid file=/var/run/rsyncd.pid
socket options = SO_KEEPALIVE

и запускаем rsync:

# service rsync start

rsync-сервер к приему данных готов.

На сервере-передатчике запускаем rsync:

# rsync -e ssh --progress -lzuogthvr --compress-level=9 --delete-after /mydir/sourcedir username@remoteserver:/backupdir/

где:

  • -e ssh – использовать SSH для связи (В данном примере рассматриваем подключение поверх удаленной оболочки, а не непосредственно к rsync-серверу. При этом требуется ввод логина и пароля. Для использования этого способа в cron можно настроить ssh доступ по ключу, без ввода пароля).
  • ‑‑progress – показывать прогресс копирования.
  • -l – пересоздавать symlinks, т.е. на удаленном сервере будут созданы символические ссылки, указывающие на нужное место. Даже если на удаленном сервере этого места не существует - лучше это делать, так как при возвращении резервной копии на этом компьютере ссылки станут рабочими.
  • -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

Как видно, мы просто поменяли местами последние два параметра.

wiki/technical/soft/rsync.txt · Последние изменения: 2017/04/07 19:51 (внешнее изменение)