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 22:51 — 127.0.0.1