Как синхронизировать новые и измененные файлы с помощью команды rsync

Как системный администратор или опытный пользователь 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 знают, насколько он полезен.

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

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.tecmint.com

Похожие статьи

Комментарии (0)