Rsync — это мощный инструмент, который облегчает передачу и синхронизацию данных между локальными и удаленными системами. В этой статье мы поговорим про Rsync примеры синхронизации, копирование файлов, основное использование и команды.
Rsync примеры синхронизации: основное использование
Давайте создадим две директории внутри / tmp, называемые «foo» и «bar», и создадим большое количество фиктивных файлов внутри / tmp / foo
mkdir /tmp/foo /tmp/bar
for i in `seq 1 100`;do touch /tmp/foo/file$i;done
Теперь у нас есть 100 файлов в / tmp / foo; / Tmp / bar все равно не должно быть. Мы можем использовать rsync для копирования всех файлов из / tmp / foo в / tmp / bar:
rsync /tmp/foo/* /tmp/bar
Используя базовое файловое расширение, мы можем захватить все файлы и скопировать их в другой каталог. Что делать, если есть каталог внутри / tmp / foo? Он не будет передан. Нам нужно будет использовать флаг -r (-рекурсивный), чтобы пройти по каталогу, передав каждый файл внутри:
rsync -r /tmp/foo/ /tmp/bar
Это очень простой пример и даже не затрагивает реальную силу команды rsync. Существуют флаги для сохранения разрешений, владельцев, групп, символических ссылок и т. Д. Поскольку эти флаги так часто используются, флаг -a (-archive) действует как псевдоним, чтобы включить их все, включая -r.
Очистите / tmp / bar, создайте символическую ссылку на один файл в / tmp / foo и используйте rsync для рекурсивной копирования всех файлов:
find /tmp/bar -delete
ln -s /tmp/foo/file100 /tmp/foo/file101
rsync -r /tmp/foo/ /tmp/bar
Мы видим, что rsync опустил символическую ссылку, которую мы создали. Снова очистите / tmp / bar, и давайте попробуем еще раз, на этот раз с использованием флага -a:
find /tmp/bar -delete
rsync -a /tmp/foo/ /tmp/bar
Используйте chown для изменения права собственности на файл в / tmp / foo другому пользователю и скопируйте файлы, используя -a to / tmp / bar. Запустите ls -l и обратите внимание, что право собственности перемещено вместе с файлом. Удобный материал!
ПРИМЕЧАНИЕ. Существует разница между включением косой черты (/) в конце пути источника и ее отсутствием; Первый передаст все файлы ВНУТРИ указанного каталога, в то время как последний передаст сам каталог со всеми файлами внутри.
The -a Flag
Как мы и говорили ранее, в этой статье мы разберем Rsync примеры синхронизации и команды. Но для того чтобы их выполнять, нужно знать основы для набора флагов.
Ранее мы упоминали, что флаг -a (-archive) является псевдонимом для набора других флагов -rltpgoD. Сломанный, каждый флаг выполняет следующие действия:
R — Рекурсивный
L — Перенести любые обнаруженные символические ссылки
T — Сохранять метки времени
P — Сохранять разрешения
G — Сохранять группы
O — Сохранять право собственности
D — Сохранение блоков и символьных устройств
Возможно, вы захотите добавить в свою команду следующие команды для упрощения чтения файлов:
H — Удобный для чтения формат файлов
Все любят отзывы
Флаг -v (–verbose) даст вам больше информации о состоянии передачи, включая краткое изложение в конце, которое будет выглядеть примерно так:
$ rsync -av foo/ bar
building file list … done
sent 1040 bytes received 20 bytes 2120.00 bytes/sec
total size is 7 speedup is 0.01
Если вы хотите получить больше статистики, запустите rsync с флагом -stats. Это даст вам подробный список общего количества файлов, переданных файлов, контрольных показателей и даже усредненной скорости передачи. С другой стороны, -q (-quiet) будет подавлять весь вывод, который может использоваться для скриптов, когда обратная связь не требуется.
Удаленные передачи сделаны просто
Истинная сила rsync заключается в способности выполнять не только локальные передачи, но и отдаленные передачи. Если вы раньше использовали scp, синтаксис для удаленных передач очень похож:
rsync [flags] [local path] [user]@[remote server]:[remote path]
В качестве примера, rsync, использующий этот синтаксис, будет выглядеть следующим образом:
rsync -avh /tmp/foo/ root@host2:/tmp/bar
Обратите внимание на: (двоеточие) между удаленным сервером и удаленным путем; Это необходимо.
Больше вариантов
Rsync поставляется с большим списком доступных опций, слишком много, чтобы переходить в одну статью. Последними флагами, которые мы рассмотрим, являются флаги -exclude, -exclude-from, -update и -delete
-exclude
Исключить файлы на основе шаблона. Rsync еще не поддерживает регулярное выражение, поэтому работает только стандартное сопоставление файлов и работа с глобусами
-exclude-с
Исключить файлы, перечисленные в файле с разделителями строк.
–update
Обновлять файлы в месте назначения ТОЛЬКО, если исходная копия была изменена совсем недавно
–delete
Удалите файлы в месте назначения ТОЛЬКО, если исходная копия больше не существует.
Альтернативные порты SSH
Если вы изменили порт SSH на своем сервере, вам нужно будет указать rsync использовать новый номер порта.
Пример с обычным портом SSH:
rsync -azh /local/path/file user@host.com:/remote/path/file
Пример с альтернативным портом SSH (22334):
rsync -azh /local/path/file -e ‘ssh -p 22334’ user@host.com:/remote/path/file
Удаленные передачи без пароля
С помощью SSH-ключей можно упростить передачу с удаленного на локальный или локальный или удаленный. С помощью SSH-ключей, настроенных как на удаленных, так и на локальных серверах, синхронизация может выполняться без особых усилий и без вмешательства человека (без необходимости вводить пароль каждый раз). В другой статье мы обсудим, как настроить SSH-ключи.
Если у Вас остались вопросы по теме «Rsync примеры синхронизации» — пишите их в комментарии. Обязательно укажите какую версию операционной системы вы используете, чтобы мы могли помочь с вашим вопросом.