Linux Rsync: что это, как настроить и применять
В Linux-окружении есть инструмент Rsync, который делает синхронизацию данных быстрой и предсказуемой. Он умеет работать с большими объемами информации, поддерживает шифрование через SSH и позволяет управлять копированием файлов без сложных операций. Rsync подходит для ежедневных бэкапов и нетипичных инфраструктурных задач. Рассказываем, как работать с файлами с помощью этой утилиты.

Возможности и особенности Rsync
Rsync (Remote Sync) — это утилита командной строки для синхронизации и передачи файлов как между директориями на одном устройстве, так и между удаленными хостами. Инструмент популярен благодаря своим возможностям, применимым при работе с большими файлами и медленными сетевыми каналами.
Особенности Rsync:
Дельта-алгоритм (Differential Delta Algorithm). Вместо копирования всего файла при обновлении, Rsync определяет и передает получателю только измененные блоки данных.
Рациональное использование сети. Благодаря дельта-алгоритму Rsync минимизирует объем передаваемых данных, что экономит время и пропускную способность сети при работе с большими файлами.
Разные режимы работы. Rsync поддерживает три режима: локальный для копирования файлов между каталогами на одном устройстве, удаленный для передачи данных по протоколу SSH, демон-режим для передачи по собственному протоколу Rsync.
Сохранение атрибутов файлов. Утилита способна сохранять атрибуты исходных файлов и директорий, включая права доступа, владельцев и группы, дату и время изменения, связанные ссылки.
Инкрементное резервное копирование. Инструмент сам определяет, какие файлы менялись с момента последнего копирования и передает только эти изменения.
Возобновление передачи данных. Если процесс прервался, например, из-за обрыва соединения, Rsync может возобновить процесс с момента остановки.
Удаление устаревших файлов. Rsync может удалять файлы в хранилище, если их больше нет в источнике.
Утилита Rsync 
Инструмент работает как с отдельными файлами, так и с большими данных, благодаря чему становится универсальным решением для любых задач.
Установка на дистрибутивах Linux
В некоторых дистрибутивах утилита уже предустановлена, но полезно знать, как установить или обновить ее вручную. Рассказываем, как действовать.
Установка на Ubuntu, Debian и их производные
Обновите локальный кэш пакетов:
После обновления списка пакетов выполните команду для установки утилиты:
Убедитесь, что Rsync установлен в той версии, которая нужна:
Если сделали все правильно, после выполнения команды увидите номер версии и данные о лицензии.
Установка на CentOS, RHEL и Fedora
Сначала тоже нужно обновить пакеты:
Для Fedora используйте команду:
Для установки Rsync на CentOS и RHEL выполните команду:
На Fedora:
Убедитесь, что утилита правильно установлена и работает:
Для удобства — короткая шпаргалка по установке:
Дистрибутив | Шаг 1: Обновление системы | Шаг 2: Установка Rsync | Шаг 3: Проверка |
Ubuntu и Debian | sudo apt update | sudo apt install rsync -y | rsync --version |
CentOS и RHEL | sudo yum update -y | sudo yum install rsync -y | rsync --version |
Fedora | sudo dnf update -y | sudo dnf install rsync -y | rsync --version |
Чтобы утилита работала корректно, настройте SELinux и межсетевой экран:
Статус сервисаАвтоматическое обновление Rsync
На Ubuntu и Debian для обновления утилиты используйте команду:
На CentOS, RHEL и Fedora работают две команды:
Синтаксис и опции Rsync
Синтаксис команды Rsync выглядит так:
Источник — это путь к конкретному файлу или директории, которые хотите скопировать. Назначение — локальное или удаленное хранилище, куда будут скопированы файлы.
Опции, с помощью которых можно работать с файлами:
Опция | Описание | Пример использования |
-a или --archive | Сохраняет права доступа к скопированным данным, ссылки, владельцев и группы | rsync -a /source/ /dest/ |
-v или --verbose | Выводит подробные сведения о процессе копирования | rsync -av /source/ /dest/ |
-z или --compress | Сжимает данные при передаче по сети | rsync -avz /source/ user@host:/dest/ |
-h или --human-readable | Показывает размеры файлов в нужном формате | rsync -avh /source/ /dest/ |
--progress | Показывает процесс копирования файлов | rsync -av --progress /source/ /dest/ |
-u или --update | Копирует новые файлы или те, что менялись с момента последнего копирования | rsync -avu /source/ /dest/ |
--delete | Удаляет файлы, которых нет в источнике | rsync -av --delete /source/ /dest/ |
Настройка Rsync
Процесс настройки зависит от сценария, в котором будете применять утилиту. Даем алгоритм действий для локального и удаленного использования, сложных задач.
Настройка для локального использования
Если Rsync используется только локально, нужно определить источник и назначение данных, параметры синхронизации. Как действовать:
Определите папку или файлы, которые вы хотите скопировать, например:
Укажите папку, куда пойдут скопированные файлы, например:
Выберите режим копирования:
-a — сохраняет структуру папок, права, ссылки и временные метки;
-v — выводит сведения о процессе копирования;
--progress — показывает прогресс копирования.
Настройте фильтры и исключения, если нужно пропустить файлы и папки. Например:
Проверьте, что Rsync нормально работает:
Автоматизируйте синхронизацию (если нужна регулярность). Пример настройки ежедневной задачи:
Команда каждый день в 22:00 будет запускать синхронизацию без вашего участия.
Настройка для удаленного использования
Для передачи данных по зашифрованному каналу Rsync используется через SSH. Убедитесь, что можете подключиться к удаленному серверу:
Настройте использование Rsync через SSH и сжатие данных:
Чтобы каждый раз не вводить пароль, настройте ключи:
Настройка Rsync-демона
Rsync-демон — серверная часть утилиты, которая позволяет принимать обращения на синхронизацию через протокол rsync без SSH. Демон-режим использует собственный протокол rsync без встроенного шифрования: для безопасности нужно использовать SSH туннель или SSH-режим.
Как настроить демона:
Создайте конфигурационный файл /etc/rsyncd.conf. Базовый вариант выглядит так:
Создайте файл с паролями /etc/rsyncd.secrets. Пример:
Задайте права:
Запустите Rsync-демона:
Настройте подключение к демону:
Примеры использования Rsync
Перейдем к применению в деле. Для примера даем команды, которые можно использовать в качестве ориентира в работе с утилитой.
Локальная синхронизация
Rsync подходит для синхронизации файлов и каталогов, когда источник и приемник находятся на одном устройстве. С ее помощью можно быстро создавать локальные бэкапы и синхронизировать папки.
Примеры использования:
rsync -av /home/user/docs/ /home/user/backup/docs/ — копирование каталога в другое место с сохранением структуры папок и пользовательских прав доступа;
rsync -av --delete /src/folder/ /dest/folder/ — синхронизация двух локальных директорий с удалением файлов, которых уже нет в исходной папке.
Удаленная синхронизация с использованием SSH
Rsync помогает выполнять синхронизацию файлов и директорий с удаленными системами через SSH. Это безопасный способ передачи данных по сети.
Примеры:
rsync -av -e ssh /local/folder/ user@server:/remote/folder/ — синхронизация локального каталога на устройстве с удаленным сервером;
rsync -av -e ssh user@server:/remote/folder/ /local/folder/ — загрузка данных с удаленного сервера на локальное устройство;
rsync -av -e "ssh -p 2222" /local/folder/ user@server:/remote/folder/ — передача данных на нестандартный порт SSH.
Специальные случаи использования
Дополнительные сценарии применения Rsync:
Задача | Команда | Расшифровка |
Исключить определенные файлы или папки | rsync -av --exclude="*.tmp" --exclude="cache/" /src/ /dest/ | Пропускает временные файлы, каталоги или шаблоны |
Включить только конкретные типы файлов | rsync -av --include="*.jpg" --exclude="*" /src/ /dest/ | Передает указанные файлы, игнорируя остальное |
Ограничить скорость передачи данных | rsync -av --bwlimit=5000 /src/ /dest/ | Работает с заданным ограничением, что полезно при слабом канале |
Показать прогресс выполнения | rsync -av --progress /src/ /dest/ | Отображает нюансы передачи файлов |
Настроить автоматическую синхронизацию | crontab -e | Создает расписание задач для постоянного выполнения |
Расширенные настройки и оптимизация
Если вы научились на базовом уровне обращаться с утилитой, можно переходить к продвинутому. Воспользуйтесь приемами, которые помогут ускорить синхронизацию и работу с большими объемами данных без лишней нагрузки.
Оптимизация производительности
Чтобы утилита работала быстрее, уменьшите количество лишних операций и используйте параметры для ускорения передачи данных. Например:
rsync -av --no-perms --no-owner --no-group /src/ /dest/ — отключение проверки прав доступа и владельцев файлов, если они не нужны;
rsync -avz /src/ /dest/ — сжатие данных при передаче по сети;
rsync -av -e "ssh -T -c aes128-ctr" /src/ /dest/ — синхронизация файлов по протоколу SSH с легким шифровальным алгоритмом;
rsync -av --size-only /src/ /dest/ — сверка передаваемых файлов с помощью размеров вместо контрольной суммы или даты и времени.

Работа с большими данными
С ростом объемов данных нужно уменьшить время сравнения, разделить задачи и избегать повторной передачи файлов, которые остались неизменными.
Чтобы надежно восстановить прерванные большие передачи, примените команду:
Она полезна, когда меняется часть файлов в архивах и базах данных.
Команда для ограничения нагрузки на сеть:
Она позволяет синхронизировать большие объемы информации, не забивая канал.
Команда для синхронизации на основе списка конкретных файлов:
Чтобы удалять данные после передачи, а не в процессе, примените команду:
Эти и другие команды для работы с большими данными — в таблице.
Цель | Команда Rsync | Описание и применение |
Передача только изменившихся блоков больших файлов | rsync -av --partial --inplace /src/ /dest/ | Используется, когда в больших файлах меняется часть данных. Позволяет не копировать файлы заново |
Ограничение нагрузки на сеть | rsync -av --bwlimit=80000 /src/ /dest/ | Ограничивает скорость передачи данных до указанного значения, чтобы не перегружать канал связи |
Создание предварительного списка файлов | rsync -av --files-from=list.txt /src/ /dest/ | Ускоряет процесс синхронизации, используя заранее подготовленный список файлов для передачи |
Удаление данных после передачи, а не в процессе | rsync -av --delete-delay /src/ /dest/ | Обеспечивает безопасное удаление устаревших файлов, чтобы избежать потери нужных данных при сбое |
Сжатие данных при передаче | rsync -avz /src/ /dest/ | Сжимает передаваемую информацию для экономии трафика при медленных сетевых соединениях |
Отображение прогресса передачи больших файлов | rsync -av --progress /src/ /dest/ | Позволяет отслеживать процесс передачи по каждому файлу и видеть показатели скорости |
Продолжение прерванной передачи | rsync -av --partial /src/ /dest/ | Возобновляет передачу больших файлов с момента остановки, если соединение прервалось |
Исключение ненужных файлов | rsync -av --exclude='*.tmp' /src/ /dest/ | Не передает временные, кэшированные или ненужные файлы, экономя время и трафик |
Инкрементное резервное копирование | rsync -av --backup --backup-dir=/backup/ /src/ /dest/ | Передает только изменившиеся файлы и сохраняет старые версии в отдельной директории резервного копирования |
Заключение
Rsync — это универсальная утилита для локальной и удаленной синхронизации файлов, резервного копирования и переноса данных между системами. Если вы ее правильно настроите, она сможет передавать только измененные части файлов, экономя время и ресурсы. Также Rsync при передаче данных умеет сохранять структуру папок, разрешения и права, позволяет настраивать фильтры и исключения.
При использовании Rsync в облачной инфраструктуре, особенно на виртуальных машинах, инструмент становится критичным компонентом стратегии резервного копирования и синхронизации данных. С помощью сервиса Evolution Compute вы можете развертывать виртуальные машины с полной поддержкой Rsync для синхронизации данных между инстансами, создания резервных копий на выделенных хранилищах и организации защищенной передачи данных через SSH-туннели. Сервис предоставляет API и Terraform-провайдер для автоматизации процессов синхронизации, позволяя управлять резервным копированием и миграцией данных как вручную через интерфейс, так и программно через инструменты Infrastructure as Code.
