Инструкция по использованию небесполезной утилиты Rsync для синхронизации файлов и каталогов между удаленными серверами, а также на локальной машине на базе операционных систем семейства Linux.
Что такое Rsync?
Rsync - это remote sync или удаленная синхронизация, является средством удаленной и локальной синхронизации файлов. Он использует алгоритм, который минимизирует объем копируемых данных, перемещая только те части файлов, которые были изменены.
Утилита в основном используется для синхронизации деревьев веб-сайтов от промежуточных до рабочих серверов, а также может использоваться для резервного копирования ключевых областей файловых систем через cron. Rsync помогает легко передавать большие объемы данных, обеспечивая сверхбыстрое и эффективное резервное копирование.
Основной синтаксис
Синтаксис утилиты rsync очень прост и похож на ssh, scp и cp.
Для создания тестовых директорий и файлов с помощью выполните следующие команды:
cd ~
mkdir directory1
mkdir directory2
touch directory1/file{1..50}
В результате в каталоге directory1 появятся 50 пустых файлов. Для просмотра можно выполнить команду:ls directory1
Для синхронизиронизаци каталогов directory1 и directory2 на одной операционной системе, введите:rsync -r directory1/ directory2
Ключ -r обеспечивает рекурсивную синхронизацию каталогов.
Вместо опции -r чаще всего на практике используют опцию -a. Опция позволяет выполнять рекурсивную синхронизацию, сохраняет символические ссылки, специальные файлы и файлы устройств, время модификации, группу, владельца и права.
Синхронизация удаленной системы
Синхронизация с удаленным каталогом выполняется по аналогии с синхронизацией локальных каталогов. Используйте команду в следующем формате:rsync -a ~/directory1 username@remote_host:destination_directory
В терминах git данную операцию можно назвать push. Операцию аналогичную pull также можно выполнить:rsync -a username@remote_host:/home/username/directory directory1
Полезные опции
Rsync предоставляет множество опций для изменения поведения утилиты по умолчанию.
Если вы передаете файлы, которые еще не были сжаты, например, текстовые файлы, то включить сжатие можно с помощью опции -z:
rsync -az source destination
Для отображения процесса синхронизации можно использовать флаг -P:rsync -azP source destination
Вывод в консоль будет выглядеть примерно следующим образом:
sending incremental file list
file1
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101)
file2
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=87/101)
…