Как системный администратор или опытный пользователь Linux, вы наверняка сталкивались или даже неоднократно использовали универсальную команду rsync
, которая позволяет пользователям быстро копировать или синхронизировать файлы локально и удаленно. Это также отличный инструмент, широко используемый для резервного копирования и зеркалирования.
Она универсальна, поскольку может копировать локально, в/из удаленной оболочки или удаленного rsync, она также удивительно гибкая, позволяя пользователям указывать любое количество файлов для копирования.
Кроме того, она позволяет копировать ссылки, устройства, владельца файла или каталога, группы и разрешения. Она также поддерживает использование без привилегий root и многое другое.
Одним из существенных отличий rsync от других файлообменных команд в Linux является использование протокола remote-update
для передачи только разницы между файлами или содержимым каталогов.
Для начала нужно запомнить, что обычная и самая простая форма использования rsync выглядит следующим образом:
rsync options source destination
С учетом этого давайте рассмотрим несколько примеров, чтобы понять, как на самом деле работает описанная выше концепция.
Синхронизация файлов локально с помощью Rsync
Используя приведенную ниже команду, я могу локально скопировать файлы из каталога Documents в каталог /tmp/documents:
rsync -av Documents/* /tmp/documents
В приведенной выше команде, опция:
-a
– означает режим архивации.-v
– означает подробную информацию о выполняемых операциях.

По умолчанию rsync копирует только новые или измененные файлы из источника в место назначения. Когда я добавляю новый файл в каталог Documents, вот что происходит после выполнения той же команды во второй раз:
rsync -av Documents/* /tmp/documents

Как вы можете заметить из вывода команды, в каталог назначения копируется только новый файл.
Опция --update
или -u
позволяет rsync пропустить файлы, которые еще не появились в каталоге назначения, и одна важная опция, --dry-run
или -n
, позволяет нам выполнить тестовую операцию без внесения каких-либо изменений. Она показывает, какие файлы должны быть скопированы.
rsync -aunv Documents/* /tmp/documents

После выполнения тестового запуска мы можем отказаться от -n
и выполнить реальную операцию:
rsync -auv Documents/* /tmp/documents

Синхронизация файлов с локального на удаленный Linux
В примере ниже я копирую файлы с локальной машины на удаленный сервер с IP-адресом 10.42.1.5. Чтобы синхронизировать только новые файлы на локальной машине, которых нет на удаленной, мы можем включить опцию --ignore-existing
:
rsync -av --ignore-existing Documents/* root@10.42.1.5:~/all/

Впоследствии, чтобы синхронизировать только обновленные или измененные файлы на удаленной машине, которые изменились на локальной машине, мы можем выполнить пробный запуск перед копированием файлов, как показано ниже:
rsync -av --dry-run --update Documents/* [email protected]:~/all/ rsync -av --update Documents/* [email protected]:~/all/

Чтобы обновить существующие файлы и предотвратить создание новых файлов в месте назначения, мы используем параметр --existing
.
Как я уже говорил, rsync – это очень мощный и универсальный инструмент Linux, и многие системные администраторы и опытные пользователи Linux знают, насколько он полезен.
Самое главное, вы также можете поделиться своим мнением о примерах, которые мы здесь рассмотрели, или, что еще лучше, дать нам ценные советы по использованию этого жизненно важного инструмента командной строки в разделе комментариев ниже.
Комментарии (0)