Rsync Linux, или Команда Удалённой Синхронизации

Rsync Linux, или Команда Удалённой Синхронизации

Команда rsync в Linux эффективно передаёт и синхронизирует файлы или каталоги между локальной и удалённой машиной, удалённой оболочкой и соответствующей ей парой, другим хостом. Любой, кто работает с системами на базе Linux, должен использовать эту мощную утилиту для лучшей производительности. С помощью этой статьи вы узнаете всё, что вам нужно знать, чтобы пользоваться этой командой.

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

Попробуйте действительно надёжный облачный VPS-хостинг с отличной производительностью виртуального сервера. Наши виртуальные серверы созданы для скорости!

Подробнее

Основной Синтаксис

Основной синтаксис rsync работает следующим образом:

rsync [необязательные модификаторы] [SRC] [DEST]

Существует несколько способов использования команды rsync Linux. В этом примере [необязательные модификаторы] указывают действия, которые необходимо предпринять, [SRC] является исходным каталогом, а [DEST] — это целевой каталог или машина.

Основной Синтаксис для Удалённой Оболочки

Если вы используете удалённую оболочку, такую как SSH или RSH, синтаксис rsync будет немного другим.

Для доступа к удалённой оболочке (PULL) используйте команду rsync:

rsync [необязательные модификаторы] [USER@]HOST:SRC [DEST]

Для доступа к удалённой оболочке (PUSH) используйте команду rsync:

rsync [необязательные модификаторы] SRC [USER@]HOST:[DEST]

Как Проверить Версию Rsync

Прежде чем мы проверим версию rsync, нам нужно зайти на сервер VPS, который мы будем использовать. Это полезное руководство поможет вам сделать это на машине с Windows, используя Putty SSH. Если вы работаете на компьютере с MacOS или Linux, используйте вместо этого терминал.

Rsync предустановлен во многих дистрибутивах Linux. Чтобы проверить, установлен ли rsync на вашем компьютере, выполните следующую команду:

rsync -version

В нашем дистрибутиве Ubuntu, вот что мы увидим в выводе:

rsync  version 3.1.3  protocol version 31

Это означает, что версия rsync 3.1.3 уже установлена на нашей машине. 

Установка Rsync

Если на вашем компьютере предварительно не установлен rsync, вы можете сделать это вручную за минуту! В дистрибутивах на основе Debian, таких как Ubuntu, вы можете сделать это с помощью следующей команды:

apt-get install rsync

Для дистрибутивов на основе rpm, таких как Fedora и CentOS, используйте следующую команду:

yum install rsync

Для MacOS используйте следующую команду:

brew install rsync

Вот и всё! Утилита rsync Linux готова к синхронизации данных, передачи и удалению файлов. Вы можете проверить успешность установки, используя ранее упомянутую команду:

rsync -version

Работа с Rsync: Примеры

Для этого руководства мы создали два каталога на нашем рабочем столе Linux и назвали их Original и Duplicate. Исходный каталог содержит три изображения, а дубликат пуст. Теперь давайте рассмотрим некоторые примеры rsync, увидим эту утилиту в действии.

Для создания двух тестовых каталогов используйте следующие команды:

cd ~
mkdir original
mkdir duplicate
touch original/file{1..3}

Если вы хотите перепроверить, удалось ли вам создать каталоги, используйте команду ls, чтобы вывести список всех файлов внутри каталога:

ls original

Результат будет выглядеть примерно так:

file1
file2
file3

Если вы используете команду ls с копией каталога, вывод должен быть пустым.

Теперь, когда наши каталоги готовы, давайте попробуем ещё несколько команд.

Следующая команда, введённая в командной строке, скопирует или синхронизирует все файлы из исходного каталога в его копию.

rsync original/* duplicate/

* поручает команде rsync синхронизировать всё в исходном каталоге с дубликатом.

Если мы поместим новое изображение или файл в исходную папку и повторно запустим ту же команду, только новое изображение будет скопировано в место назначения.

Очень удобно использовать эту функцию, когда вы копируете файлы по сети с ограниченной пропускной способностью.

Самые Распространённые Команды Rsync

Вот список наиболее часто используемых с rsync опций:

Эта опция включает режим “архив”. 

-a, --archive

Вызывает визуальный вывод, который показывает прогресс процесса копирования.

-v, --verbose

Выводит данные в человекочитаемом формате.

-h, --human-readable format

Эта опция сжимает данные файла во время передачи.

-z, --compress

Копирует данные рекурсивно.

-r

Как Использовать Команды Rsync с Подкаталогами

Помните, что эта команда будет копировать файлы только из основного каталога папки Original, но не из подкаталогов.

Если вы хотите скопировать и подкаталоги, используйте эту команду:

rsync -r original/ duplicate/

Опция -r (recursive) указывает rsync копировать всё, включая подкаталоги и файлы из нашей исходной папки.

Модификатор /, используемый после original, указывает rsync скопировать содержимое оригинального каталога в дубликат папки.

Как Синхронизировать Файлы

Если вы хотите синхронизировать файлы, то есть скопировать файлы, которые находятся в целевой, но не в исходной папке, в исходную папку, используйте следующую команду:

rsync -r original duplicate/

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

Как Комбинировать Опции Rsync

Ещё одна полезная опция — это -a (archive), и её можно объединить со многими другими командами. Команда, в которой указан этот параметр будет не просто копировать файлы, но и разрешения, время изменений и любые другие данные.

Использование опции -a вместе с -v будет выглядеть примерно так:

rsync -av --dry-run  Original/ Duplicate/

Не волнуйтесь, ведь она только выглядит сложно! Давайте разберёмся.

Эта команда не делает каких-либо изменений, а просто показывает файлы, которые будут скопированы. С помощью этой команды вы можете получить список файлов, которые будут скопированы.

Если вы хотите скопировать все файлы из этого списка, повторите команду без dry-run.

dry-run, или -n заставляет rsync выполнить пробный запуск, который не вносит никаких изменений.

Другие Опции Команды Rysnc

При использовании опции -a с опцией -v, то есть -av в нашей команде, мы увеличиваем детализацию. Другими словами, с помощью -v мы получаем более визуальный вывод, который показывает прогресс процесса.

rsync -av original/ duplicate/

Если вы хотите синхронизировать две папки, но удалить элементы в папке-дубликате, которых нет в исходной папке, добавьте –delete, например:

rsync -av --delete  original/ duplicate/

Вы также можете пропустить определённые файлы или подкаталоги при синхронизации двух папок. Сделайте это, добавив -exclude=. Если вы хотите указать более одного файла, разделите их запятыми.

rsync -av --exclude=file1,file2  original/ duplicate/

Или же наоборот: вы можете выбрать, какие файлы будут синхронизированы. Для этого вам нужно добавить опцию -include=. Она также может быть использована вместе с параметром -exclude=. В приведённом ниже примере будут скопированы только файлы, начинающиеся с буквы L, и исключены все остальные файлы:

rsync -av --include=L* --exclude=*  original/ duplicate/

Rsync также позволяет указать размер файла, который можно синхронизировать. Для этого используйте параметр –max-size:

rsync -av --max-size=10k original/ duplicate/

Последняя опция команды, которую мы рассмотрим, это -z (–compress). Эта команда объединит файлы, которые передаются по сети. В качестве бонуса давайте посмотрим, как перенести файлы из исходного сервера на другой. Команда будет выглядеть так:

rsync -za ~/Desktop/Original olha@192.168.22.90:~/tmp/

Как упоминалось ранее, -z сжимает файлы, -a или просто a, добавленная к -z, гарантирует, что все разрешения также будут скопированы.

~/Desktop/Original — это исходник. Это локальный каталог, находящийся на компьютере, из которого вы вошли, и, наконец, olha@192.168.22.90: ~/tmp/ означает место назначения. olha@192.168.22.90 — это адрес удалённого сервера назначения, а : ~/tmp/ указывает на конкретную папку на этом компьютере.

Как Добавить Индикатор Выполнения

Ещё одна бонусная опция, которую можна добавить к вышеперечисленным командам это -P. Она объединит параметры –progress и –partial, что добавит в вывод индикатор выполнения синхронизации файлов, а также позволит вам возобновить любую прерванную передачу файлов.

rsync -azP [SRC] [DEST]

Результат будет выглядеть примерно так:

sending incremental file list
./
file1
         0 100%    0.00kB/s   0:00:00   (xfer#1, to-check=1/3)
file2
         0 100%    0.00kB/s   0:00:00   (xfer#2, to-check=2/3)
file3
         0 100%    0.00kB/s   0:00:00   (xfer#3, to-check=3/3)

Затем, если мы снова запустим команду, вывод будет выглядеть намного короче. Это потому, что не было внесено никаких новых изменений. Вот пример вывода:

sending incremental file list
send 26 bytes received 5 bytes 1200.00 bytes/sec
total size is 0 speedup is 0.00

Если вы хотите скопировать только определённые файлы, укажите это с помощью следующей команды:

touch original/file{1..5}
rsync -azP [SRC] [DEST]

Вывод будет выглядеть аналогично, но только с файлами, указанными в фигурных скобках.

Как Создать Резервную Копию Rsync

Ещё одна важная команда создание резервной копии rsync. Для этого объедините –backup с командой –dir, чтобы указать место для хранения резервных копий файлов.

rsync -a --delete --backup --backup-dir=/path/to/backup /path/to/SRC [DEST]

Выводы

Это лишь малая часть того, что может rsync Linux! Это невероятно мощная утилита, о которой должен знать и уметь пользоваться каждый системный администратор или разработчик Linux. В этом руководстве мы разобрались с основами — установкой и основными командами. Если вас интересуют более продвинутые функции, продолжайте знакомиться с ними в официальной документации.

Приготовьтесь быть ещё более эффективным! Успехов с вашими проектами! 

Author
Автор

Olha L.

Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.