Как системный администратор или опытный пользователь Linux, вы, вероятно, сталкивались или даже несколько раз использовали универсальную в Linux команду rsync, которая позволяет пользователям быстро копировать или синхронизировать файлы локально и удаленно. Это также отличный инструмент, широко используемый для операций резервного копирования и зеркалирования.
Некоторые из его выдающихся особенностей и преимуществ включают; он исключительно универсален в том смысле, что может копировать локально, в/из удаленной командной строки или удаленного rsync, он также удивительно гибкий, позволяя пользователям указывать любое количество файлов для копирования.
Кроме того, он разрешает копирование ссылок, устройств, владельца файла или каталога, групп и разрешений. Он также поддерживает использование без прав root в сочетании со многими другими.
Одним из существенных отличий rsync от других команд управления файлами в Linux является использование протокола удаленного обновления для передачи только различий между файлами или содержимым каталога.
Поэтому в этой статье мы рассмотрим, как rsync может помочь нам синхронизировать только новые или измененные файлы или содержимое каталога при создании резервных копий и за их пределами в Linux.
rsync options source destination
Тем не менее, давайте углубимся в некоторые примеры, чтобы раскрыть, как на самом деле работает описанная выше концепция.
С помощью приведенной ниже команды можно локально скопировать файлы из каталога «Мои документы» в каталог «/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
В приведенном ниже примере я копирую файлы со своего локального компьютера на удаленный сервер с IP–адресом — 10.42.1.5. Чтобы синхронизировать только новые файлы на локальном компьютере, которых нет на удаленном компьютере, мы можем включить опцию --ignore-existing
:
rsync -av --ignore-existing Documents/* aaronkilik@10.42.1.5:~/all/
Впоследствии, чтобы синхронизировать на удаленном компьютере только обновленные или измененные файлы, которые изменились на локальном компьютере, мы можем выполнить пробный запуск перед копированием файлов, как показано ниже:
rsync -av --dry-run --update Documents/* aaronkilik@10.42.1.5:~/all/ rsync -av --update Documents/* aaronkilik@10.42.1.5:~/all/
Чтобы обновить существующие файлы и предотвратить создание новых файлов в месте назначения, мы используем опцию --existing
.
Вы можете просмотреть страницу man rsync
, чтобы найти дополнительные полезные опции для расширенного использования. Как я упоминал ранее, rsync — очень мощный и универсальный инструмент Linux, и многие системные администраторы и опытные пользователи Linux знают, насколько это выгодно.
Самое главное, что вы также можете поделиться своим мнением о примерах, которые мы рассмотрели здесь, или, что еще лучше, предложить нам ценные советы по использованию этого важного инструмента командной строки в разделе комментариев ниже.