Копирование данных с помощью rsync + ssh

Очень часто бывает необходимо скопировать один или несколько файлов с одного сервера на другой. Использовать FTP-клиент для этого не всегда возможно(т.к. необходимо чтобы на машине получателе был запущен и настроен FTP-сервер). Можно скопировать файлы через SSH с помощью scp, благо, SSH-сервер практически на любой UNIX-системе устанавливается и запускается штатно, но возможности данной утилиты ограничены. Он не умеет делать докачку файлов, пропускать уже имеющиеся. Поэтому, для копирования файлов между серверами лучше всего использовать утилиту rsync.
Данная утилита умеет копировать файлы через ssh протокол, умеет отслеживать как изменился файл при копировании между источником и приёмником и копирует только изменившиеся данные. Кроме этого, rsync умеет сжимать данные при копировании, что позволяет экономить трафик. Rsync очень удобная утилита для синхронизации файлов между несколькими серверами. Утилита rsync должны находиться на обоих машинах и желательно, чтобы была доступна из путей «по-умолчанию»(в противном случае, можно использовать опцию, например, –rsync-path=/usr/local/bin/rsync чтобы указать, где rsync находится на удалённой машине).
Копирование данных выполняется следующей командой:
rsync –progress -avz -e ssh user@host:/path/on/server/ /directory/path/
или
rsync –progress -avz /directory/path/ -e ssh user@host:/path/on/server/
при этом, ключ -a эквивалентен набору следующих ключей -rlptgoD -r – означает рекурсивное копирование директорий -l – копировать симлинки как симлинки -p – сохранять права доступа к файлам() -t – сохранять время (модификации) если поддерживается файловой системой -g – сохранять группу владельца файла -o – сохранять владельца файла -D – (эквивалентна опциям –devices –specials), то есть – «–devices» указывает rsync’у копировать символьные и блочные файлы на другой сервер и попробовать их пересоздать там. Эта опция игнорируется, если rsync запущен не от пользователя root. «–specials» – эта опция указывает rsync’у копировать специальные файлы, такие как именованные каналы и сокеты. -v – эта опция указывает команде rsync выдавать более подробную служебную информацию на старте. -z – эта опция указывает использовать сжатие при передаче данных. –progress — показывать ход выполнения копирования данных -e ssh – указывает rsync использовать протокол ssh.
Чтобы проверить работу rsync, может оказаться полезной опция -n – она заставляет rsync показать какие файлы и каталоги будут скопированы, но на самом деле никакого копирования не производит.
Необходимо обратить внимание на слеш в конце исходного пути, т.к. если он указан, то будет производиться копирование содержимого каталога. Если он отсутсвует, то в этом случае, будет скопирован сам каталог вместе со всем своим содержимым.