| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| wiki:technical:soft:rsync [2014/06/03 20:42] – alexander | wiki:technical:soft:rsync [2017/04/07 22:51] (текущий) – внешнее изменение 127.0.0.1 |
|---|
| ====== rsync ====== | ====== Rsync ====== |
| rsync - программа, которая выполняет синхронизацию файлов и каталогов, может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию. | **rsync** - программа, которая выполняет синхронизацию файлов и каталогов, может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию. |
| |
| ===== Установка ===== | ===== Установка ===== |
| На примере Debian: | На примере **Debian**: |
| <code> | <code> |
| # aptitude install rsync | # aptitude install rsync |
| ===== Копирование ===== | ===== Копирование ===== |
| На сервере-приемнике правим **/etc/default/rsync**. Меняем в строке "RSYNC_ENABLE=false" //false// на //true//. Правим (создаем) **/etc/rsyncd.conf**. Прописываем туда: | На сервере-приемнике правим **/etc/default/rsync**. Меняем в строке "RSYNC_ENABLE=false" //false// на //true//. Правим (создаем) **/etc/rsyncd.conf**. Прописываем туда: |
| <file> | <file txt /etc/rsyncd.conf> |
| log file=/var/log/rsyncd | log file=/var/log/rsyncd |
| pid file=/var/run/rsyncd.pid | pid file=/var/run/rsyncd.pid |
| socket options = SO_KEEPALIVE | socket options = SO_KEEPALIVE |
| </file> | </file> |
| и запускаем rsync: | и запускаем **rsync**: |
| <code> | <code> |
| # /etc/init.d/rsync start | # service rsync start |
| </code> | </code> |
| rsync-сервер к приему данных готов. | rsync-сервер к приему данных готов. |
| |
| На сервере-передатчике запускаем rsync: | На сервере-передатчике запускаем **rsync**: |
| <code> | <code> |
| # rsync -e ssh --progress -lzuogthvr --compress-level=9 --delete-after /mydir/sourcedir username@remoteserver:/backupdir/ | # rsync -e ssh --progress -lzuogthvr --compress-level=9 --delete-after /mydir/sourcedir username@remoteserver:/backupdir/ |
| </code> | </code> |
| где: | где: |
| * -e ssh - Использовать SSH для связи. | * **-e ssh** -- использовать **SSH** для связи (В данном примере рассматриваем подключение поверх удаленной оболочки, а не непосредственно к rsync-серверу. При этом требуется ввод логина и пароля. Для использования этого способа в cron можно настроить [[wiki:technical:soft:ssh_keys|ssh доступ по ключу]], без ввода пароля). |
| * ‑‑progress - Показывать прогресс копирования. | * **‑‑progress** -- показывать прогресс копирования. |
| * -l - Пересоздавать synlinks, т.е. на удаленном сервере будут созданы симлинки, ссылающиеся на нужное место. Даже если на удаленном сервере этого места не существует - лучше делать так, т.к. при возвращении резервной копии на этом компьютере симлинки станут рабочими. | * **-l** -- пересоздавать symlinks, т.е. на удаленном сервере будут созданы символические ссылки, указывающие на нужное место. Даже если на удаленном сервере этого места не существует - лучше это делать, так как при возвращении резервной копии на этом компьютере ссылки станут рабочими. |
| * -z - Использовать сжатие (для экономии трафика). Если много сжимать - копирование может занять много времени. Можно отказаться от этой опции в случае недостаточной мощности процессора. | * **-z** -- использовать сжатие (для экономии трафика). Если много сжимать - копирование может занять много времени. Можно отказаться от этой опции в случае недостаточной мощности процессора. |
| * -u - Режим обновления, т.е. инкрементальное копирование. rsync скопирует только те файлы, которые еще не существуют на удаленном сервере или которые были изменены. | * **-u** -- режим обновления, инкрементальное копирование. **rsync** скопирует только те файлы, которые еще не существуют на удаленном сервере или которые были изменены. |
| * -o - Установить пользователя-владельца скопированного файла таким-же, как и у оригинала. | * **-o** -- установить пользователя-владельца скопированного файла таким-же, как и у оригинала. |
| * -g - Установить группу-владельца скопированного файла таким-же, как и у оригинала. | * **-g** -- установить группу-владельца скопированного файла таким-же, как и у оригинала. |
| * -t - Установить время создания/модификации файла на удаленном сервере такое-же, как и у оригинала. Опция обязательна для инкрементального копирования - иначе время файла на удаленном компьютере установится текущим. | * **-t** -- установить время создания/модификации файла на удаленном сервере такое-же, как и у оригинала. Опция обязательна для инкрементального копирования - иначе время файла на удаленном компьютере установится текущим. |
| * -h - Вывод информации на экран в удобном для человека виде (human-readable). | * **-h** -- вывод информации на экран в удобном для человека виде (human-readable). |
| * -v - Verbose-вывод (т.е. расширенная информация в процессе копирования). | * **-v** -- verbose-вывод (т.е. расширенная информация в процессе копирования). |
| * -r - Рекурсивное копирование (т.е. все, что находится по указанному пути, включая поддиректории). | * **-r** -- рекурсивное копирование (т.е. все, что находится по указанному пути, включая поддиректории). |
| * ‑‑compress-level=9 - Уровень сжатия (0-9) | * **‑‑compress-level=9** -- уровень сжатия (0-9) |
| * ‑‑delete-after - Изменяет поведение утилиты. По умолчанию, утилита сначала удаляет целевой файл, если он существует, и только потом копирует его замену, что полезно при передаче больших файлов на сервер, на котором слабо со свободным местом. Если же указать ‑‑delete-after - то сначала в temp-директорию будет скачан новый файл, а уже потом будет произведено удаление старого. | * **‑‑delete-after** -- изменяет поведение утилиты. По умолчанию, утилита сначала удаляет целевой файл, если он существует, и только потом копирует его замену, что полезно при передаче больших файлов на сервер, на котором слабо со свободным местом. При использовании опции **‑‑delete-after** сначала в **/temp** будет скачан новый файл, а затем будет выполнена замена целевого с удалением. |
| * /mydir/sourcedir - директория, которая будет скопирована. | * **/mydir/sourcedir** -- директория, которая будет скопирована. |
| * username - имя пользователя для подключения на удаленный сервер. | * **username** -- имя пользователя для подключения на удаленный сервер. |
| * remoteserver - ip-адрес или hostname удаленного сервера. | * **remoteserver** -- ip-адрес или hostname удаленного сервера. |
| * /backupdir/ - Директория, в которую будет положена копируемая папка (должна существовать). | * **/backupdir/** -- директория, в которую будет положена копируемая папка (должна существовать). |
| |
| ===== Восстановление ===== | ===== Восстановление ===== |