Rsync (Remote Sync) является в Linux быстрой и популярной утилитой копирования и синхронизации файлов и каталогов. Она позволяет передавать зашифрованные данные с использованием SSH и SSL.
Направление передачи данных может быть между локальной машиной и удалённой, между удалёнными хостами. Утилита отправляет данные в один поток, передавая только различия между источником и местом назначения, что увеличивает скорость, убирает дополнительные задержки, являющиеся зачастую проблемой при передаче большого количества маленьких файлов.
Содержание
Синтаксис
rsync [OPTION]... SRC [SRC]... DEST - Передача локально
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST - Передача с локальной машины на удалённую
rsync [OPTION]... [USER@]HOST:SRC [DEST] - Передача с удалённой машины на локальную
Здесь:
- OPTION
- параметры rsync
- SRC
- Исходный каталог
- DEST
- целевой каталог
- USER
- удаленное имя пользователя
- HOST
- удаленное имя хоста или IP-адрес
Приведены лишь основные выражения утилиты rsync
.
Основные опции
- -a , --archive
- Режим архива, который указывает rsync рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства, сохранять символические ссылки, время модификации, группы, владение и разрешения
- -z , --compress
- Заставляет rsync сжимать данные при их отправке на конечный компьютер
- --progress
- Показывает индикатор выполнения (прогресса) во время передачи
- -P
- То же, что и --partial --progress
- --delete
- Удаляет посторонние файлы из места назначения, что полезно для зеркалирования
- -q , --quiet
- Подавляет сообщения, не связанные с ошибками
- -v, --verbose
- Увеличивает детализацию передаваемых данных
- -r, --recursive
- Рекурсия по каталогам
- u, --update
- Пропускает файлы, которые на приёмнике новее
- -l, --links
- Копирует символьные ссылки как символьные ссылки
- -V, --version
- Выводит версию утилиты
Опций очень много и с полным списком их можно ознакомиться после установки утилиты здесь:
$ rsync --help
Установка
В Arch Linux:
$ sudo pacman -S rsync
В Ubuntu:
$ sudo apt install rsync
Использование rsync
Локальное использование
Локальное использование ничем не отличается от применения для копирования файлов и каталогов утилит cp
и scp
.
oleg@mobile:~:$ rsync -var /home/oleg/webprojects/emoney/* /home/oleg/tmp/
sending incremental file list
babki.txt
obb-tarifa.pdf
binance/
binance/readme
contact/
contact/contact-prevod.pdf
contact/readme
digiseller/
monetary/
monetary/readme
qiwi/
qiwi/readme
...
sent 9.100.151 bytes received 1.698 bytes 18.203.698,00 bytes/sec
total size is 9.090.804 speedup is 1,00
Синхронизация файлов и каталогов локальной и удалённой машин
Передача с локальной машины на удалённую:
oleg@mobile:~:$ rsync -var /home/oleg/webprojects/emoney/* mensh@139.162.132.20:/home/mensh/emoney/
sending incremental file list
babki.txt
obb-tarifa.pdf
binance/
binance/readme
contact/
contact/contact-prevod.pdf
contact/readme
digiseller/
...
sent 6.369.887 bytes received 1.352 bytes 364.070,80 bytes/sec
total size is 9.090.804 speedup is 1,43
Передача с удалённой машины на локальную:
oleg@mobile:~:$ rsync -var mensh@139.162.132.20:/home/mensh/drush-backups/* /home/oleg/tmp/
mensh@139.162.132.20's password:
receiving incremental file list
linuxcookbookru/
linuxcookbookru/20211203085050/
linuxcookbookru/20211203085050/drupal/
linuxcookbookru/20211203085050/drupal/.editorconfig
linuxcookbookru/20211203085050/drupal/.gitignore
linuxcookbookru/20211203085050/drupal/.htaccess
linuxcookbookru/20211203085050/drupal/CHANGELOG.txt
linuxcookbookru/20211203085050/drupal/COPYRIGHT.txt
...
sent 21.580 bytes received 3.577.938 bytes 378.896,63 bytes/sec
total size is 3.497.088 speedup is 0,97
Во всех случаях я использовал лишь три опции: -a
, -r
, -v
.
Они позволили:
- синхронизировать данные, создавая при необходимости подкаталоги (
-r
); - увеличить детализацию, создав более визуальный вывод (
-v
); - передать все файлы с разрешениями, временем изменения и любыми другими данными (
-a
).
Заключение
Далее из нескольких представленных примеров использования в Linux команды rsync
видна её мощь. Любой пользователь, работающий с операционной системой Linux, должен применять эту мощную утилиту для повышения своей производительности.