Копирование данных с помощью 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* показать какие файлы и каталоги будут скопированы, но на самом деле никакого копирования не производит.

Необходимо обратить внимание на слеш в конце исходного пути, т.к. если он указан, то будет производиться копирование содержимого каталога. Если он отсутсвует, то в этом случае, будет скопирован сам каталог вместе со всем своим содержимым.

Комментариев нет:

Отправить комментарий