14.04.2020

Как использовать Rsync в Linux?

Инструкция по использованию небесполезной утилиты 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)

…