Команда rsync в Linux: опции и примеры использования

Уведомление о партнёрских ссылках v3.1
Уведомление о партнёрских ссылках v3.2 (мобильная версия)
Тестовая средаСемейство RHELAlmaLinux 9.8Учётная запись rootПроверено 2026-10-07

Если ради синхронизации папок на двух серверах каждый раз копировать всё заново, объём передачи остаётся равным полному размеру, даже когда изменился всего один файл. Команда rsync (сокращение от remote sync) сравнивает источник и приёмник и передаёт только различающиеся файлы, причём одинаково работает и между локальными папками, и между серверами, соединёнными по SSH. В этой статье разобраны базовое использование, опции и примеры двух способов подключения — через SSH и через демон rsync.

Вывод в этой статье получен с rsync 3.2.7 в AlmaLinux 9.8; если rsync не установлен, установите его через менеджер пакетов.

# Семейство RHEL
dnf -y install rsync
# Семейство Debian
apt -y install rsync

✅ Базовое использование

Базовый синтаксис выглядит так.

rsync -опции источник приёмник

Команда cp принимает аргументы в том же порядке: сначала источник, затем приёмник. Если поставить в конце источника косую черту [/], в приёмник попадёт только содержимое папки, а без неё — папка целиком.

~]# rsync -av www/ backup/
sending incremental file list
index.html
img/
img/logo.png
~]# rsync -av www backup/
sending incremental file list
www/
www/index.html
www/img/
www/img/logo.png

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

~]# rsync -av www/ backup/
sending incremental file list

sent 166 bytes  received 13 bytes  358.00 bytes/sec
total size is 3,015  speedup is 16.84

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

Опция -n показывает только файлы, которые изменятся, ничего не передавая, а в конце вывода появляется [(DRY RUN)]. Опции, удаляющие файлы в приёмнике, например -⁠-delete, сначала проверяйте с -n и только потом запускайте.

~]# rsync -avn --delete www/ backup/
sending incremental file list
deleting old.bak
index.html

sent 188 bytes  received 39 bytes  454.00 bytes/sec
total size is 3,013  speedup is 13.27 (DRY RUN)

✅ Опции команды rsync & симулятор

ОпцияОписание
-a--archiveКопирует и подкаталоги, сохраняя права, владельца, время изменения и символические ссылки (то же, что -rlptgoD)
-v--verboseВыводит имена переданных файлов и объём передачи
-z--compressСжимает данные файлов во время передачи
-r--recursiveКопирует и подкаталоги (входит в -a)
-t--timesСохраняет время изменения (входит в -a). По нему определяется, какие файлы пропустить при следующем запуске
-n--dry-runВыводит только файлы, которые изменятся, ничего не передавая, и добавляет в конце (DRY RUN)
-u--updateПропускает файлы, которые в приёмнике новее
-h--human-readableВыводит число байт в единицах K, M и G
-PТо же, что --partial --progress. Показывает ход передачи каждого файла и возобновляет прерванные передачи
-i--itemize-changesВыводит изменения по каждому файлу в виде условных обозначений>f+++++++++ новый файл · >f.st.⁠.⁠.⁠.⁠.⁠. изменение размера и времени · *deleting удаление
-e--rsh=COMMANDЗадаёт удалённую оболочку-e 'ssh -p 2222 -i /root/.ssh/key.pem'
--deleteУдаляет в приёмнике файлы, которых нет в источнике (нужна -r или -a)
--exclude=PATTERNИсключает файлы и каталоги, подходящие под шаблон--exclude '*.tmp' --exclude 'cache/'
--include=PATTERNСтавится перед --exclude и выводит из-под исключения только этот шаблон
--max-size=SIZEНе передаёт файлы больше заданного размера (--min-size — файлы меньше заданного)--max-size=3M --min-size=10k
--bwlimit=RATEОграничивает скорость передачи, единица — KiB/s
--statsВыводит статистику по числу файлов и объёму передачи
Симулятор команды rsyncrsync 3.2.7
[root@server work]#
Работает только в браузере и не трогает настоящие файлы. Папка www — источник, папка backup — прошлая резервная копия; вводите rsync с разными опциями и проверяйте результат командами ll, cat и diff. Удалённые адреса (user@host:путь) проверяются только по формату — подключение не выполняется. Чтобы вернуть исходное состояние, нажмите [Start over]. Клавишами ↑↓ можно снова вызвать введённые ранее команды, а если ввести uknew help, появится список доступных команд.

✅ Способы подключения: SSH и демон rsync

Для синхронизации с удалённым сервером есть два способа подключения. Одно двоеточие [:] после хоста означает подключение через SSH, а двойное двоеточие [::] — прямое подключение к демону rsync на порту 873.

КатегорияЧерез SSH (:)Через демон rsync (::)
Синтаксисrsync -опции user@host:/путь /локальный/путьrsync -опции host::модуль/путь /локальный/путь
ПортПорт SSH (по умолчанию 22)873
ШифрованиеШифруется через SSHБез шифрования
АутентификацияSSH-ключ или парольhosts allow в rsyncd.conf; по желанию — учётная запись и пароль
Настройка на сервереНе нужна (достаточно доступа по SSH)Установка rsync-daemon, /etc/rsyncd.conf, открытие порта 873
НазначениеРезервное копирование и развёртывание между серверами (выбор по умолчанию)Зеркалирование во внутренней сети без выдачи учётных записей SSH

🔲 Подключение через SSH

Если к серверу можно подключиться по SSH, rsync сразу работает без настройки на стороне сервера. Если порт другой или используется файл ключа, укажите команду ssh как есть в опции -e.

# локальный → удалённый
rsync -avz /home/2server_data/ root@192.168.45.239:/home/1server_data/
# удалённый → локальный
rsync -avz root@192.168.45.239:/home/1server_data/html_Remote /home/2server_data
# Указать порт SSH и файл ключа
rsync -avz -e 'ssh -p 2222 -i /root/.ssh/key.pem' root@192.168.45.239:/home/1server_data/ /home/2server_data
Команда rsync: результат копирования с удалённого сервера на локальный

Чтобы исключить определённые файлы или каталоги, добавьте -⁠-exclude отдельно для каждого шаблона или перечислите шаблоны в фигурных скобках за один раз.

rsync -avz --exclude 'html_Remote_Excertion' --exclude 'Exception_File' root@192.168.45.239:/home/1server_data/ /home/2server_data
rsync -avz --exclude={'html_Remote_excertion/*','Exception_File'} root@192.168.45.239:/home/1server_data/ /home/2server_data
Команда rsync: с удалённого сервера на локальный, исключение отдельных файлов и каталогов

🔲 Подключение через демон rsync

Демон rsync даёт доступ к модулям через порт 873 без учётной записи SSH. Трафик при этом не шифруется, поэтому демон используют между серверами одной внутренней сети.

В AlmaLinux 9 установите пакет rsync-daemon и запустите службу. Если на сервере работает firewalld, откройте порт 873, а на облачных серверах — в брандмауэре консоли. Способ через xinetd, которым пользовались в RHEL 8 и более ранних версиях, в 9 убран.

dnf -y install rsync-daemon
systemctl enable --now rsyncd
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reload

В файле конфигурации [/etc/rsyncd.conf] укажите имя модуля, путь и разрешённые хосты. Если задать для read only значение yes, удалённые клиенты смогут только забирать данные.

[myhome]
path = /home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.45.182
max connections = 3
timeout = 30

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

~]# rsync 192.168.45.239::
myhome
home
~]# rsync 192.168.45.239::myhome
drwxr-xr-x          4,096 2025/06/12 22:14:39 .
drwxr-xr-x          4,096 2025/06/12 22:21:10 1server_data
drwxr-xr-x          4,096 2025/06/12 22:14:39 2server_data

Копирование задаётся в формате [хост::модуль/путь]. -⁠-delete удаляет в приёмнике файлы, которых нет в источнике, а -⁠-include выводит из-под исключения только элементы, указанные перед -⁠-exclude.

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
./
Exception_File
html_Remote/
html_Remote_Excertion/

sent 58 bytes  received 332 bytes  780.00 bytes/sec
total size is 442  speedup is 1.13
~]# rsync -avz --delete 192.168.45.239::myhome/1server_data/ /home/2server_data/
~]# rsync -avz --include '*.html' --exclude 'exclude.txt' 192.168.45.239::myhome/1server_data/ /home/2server_data/
Команда rsync: с удалённого сервера на локальный, опция delete
Команда rsync: с удалённого сервера на локальный, опции delete, include и exclude

На сервере с включённым SELinux доступ к пути модуля может блокироваться с ошибкой [Permission denied (13)]. В тесте всё прошло после отключения SELinux командой [setenforce 0].

~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
rsync: change_dir "/1server_data" (in myhome) failed: Permission denied (13)
sent 8 bytes  received 90 bytes  65.33 bytes/sec
total size is 0  speedup is 0.00
rsync error: some files/attrs were not transferred (see назад errors) (code 23) at main.c(1658) [Receiver=3.1.2]

-⁠-bwlimit ограничивает скорость передачи в KiB/s, а если добавить -P, заодно виден ход передачи каждого файла. -⁠-max-size и -⁠-min-size передают только файлы в заданном диапазоне размеров.

rsync -avzP --bwlimit=100 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsync -avz --max-size='3M' --min-size='10k' 192.168.45.239::myhome/1server_data/ /home/2server_data/
Команда rsync: с удалённого сервера на локальный, ограничение полосы до 100kb и ход передачи с опцией -P

ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Докажите, что вы человек: 9   +   9   =