Как использовать команду Linux Rsync (удаленная синхронизация)

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

Базовый синтаксис

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

Базовый синтаксис для удаленной оболочки

При использовании удаленной оболочки, такой как SSH или RSH, синтаксис rsync будет немного отличаться.
Для доступа к удаленной оболочке ( PULL ) используйте команду rsync:
rsync [optional modifiers] [USER@]HOST:SRC [DEST]
Для доступа к удаленной оболочке ( PUSH ) используйте команду rsync:
rsync [optional modifiers] 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
Это оно! Linux rsync готов синхронизировать данные, выполнять передачу файлов и удалять файлы. Вы можете проверить, прошла ли установка успешно, используя ранее упомянутую команду:
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 с подкаталогами

Имейте в виду, что приведенная выше команда будет копировать файлы только из основного каталога исходной папки, а не из каких-либо подкаталогов.
Если вы хотите скопировать и подкаталоги, вам нужно будет использовать эту команду:
rsync -r original/ duplicate/
Параметр -r–recursive ) указывает rsync копировать все, включая подкаталоги и файлы из нашей исходной папки.
/ Модификатор используется после того, как оригинальные инструктирует 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 в нашей команде, увеличивает детализацию. Вот как это должно выглядеть:
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 -az ~/Desktop/Original edward@192.168.22.90:~/tmp/
Как упоминалось ранее, -z сжимает файлы, -a или просто добавление в -z гарантирует, что все разрешения также будут скопированы.
~ / Desktop / Original является источником. Это локальный каталог - тот, который находится на машине, в которую вы вошли, и, наконец, edward@192.168.22.90: ~ / tmp / указывает место назначения. edward@192.168.22.90 - это адрес удаленного сервера назначения, а: ~ / tmp / указывает на определенную папку на этом компьютере.

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

В дополнение к указанным выше команд, вы можете добавить -P , которая будет сочетать в себе опции -Прогресс и -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 с - реж команды , так что вы можете указать , где файлы резервной копии будут сохранены.
rsync -a --delete --backup --backup-dir=/path/to/backup /path/to/SRC [DEST]

Заключение

Мы рассмотрели только верхушку айсберга, когда дело доходит до команд Rsync. Linux Rsync - невероятно мощная утилита, которую должен знать каждый администратор сервера или разработчик Linux. Мы рассмотрели все, чтобы вы начали работу, от установки до основных команд. Если вы хотите узнать о более продвинутых функциях - проверьте официальную документацию.

Добавить комментарий

Автору будет очень приятно узнать обратную связь о своем руководстве.

Комментариев 0