Копирование данных с помощью 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* показать какие файлы и каталоги будут скопированы, но на самом деле никакого копирования не производит.
Необходимо обратить внимание на слеш в конце исходного пути, т.к. если он указан, то будет производиться копирование содержимого каталога. Если он отсутсвует, то в этом случае, будет скопирован сам каталог вместе со всем своим содержимым.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий