Rsync (Remote Sync) — это утилита командной строки для синхронизации файлов между двумя системами на базе Unix. Кроме того, rsync можно применять на одной машине для синхронизации файлов между двумя папками. Он использует интеллектуальный алгоритм, позволяющий отправлять только изменения между исходными и целевыми файлами, что значительно снижает объем передаваемых данных и экономит пропускную способность сети.
Rsync часто используется для создания резервных копий больших объемов данных или для передачи файлов между двумя компьютерами. Он поддерживает синхронизацию файлов как с локального на локальный, так и с локального на удаленный и с удаленного на локальный. Однако синхронизация с удаленного на удаленный не поддерживается.
В этой статье мы рассмотрим несколько распространенных способов применения команды rsync в терминале. С помощью rsync можно выполнять множество задач, таких как:
-
Создание резервной копии данных: С помощью rsync вы можете легко создавать резервные копии важных файлов или директорий на внешние носители или удаленные серверы. Используйте параметры —archive для сохранения всех атрибутов файлов и —compress для сжатия данных при передаче.
-
Синхронизация между локальными папками: Если у вас есть две папки на одной машине, вы можете синхронизировать их, используя rsync для копирования только измененных файлов. Параметр —dry-run позволяет предварительно увидеть, какие файлы будут изменены.
-
Передача файлов по сети: Rsync позволяет быстро и эффективно передавать файлы между двумя машинами, что особенно полезно при работе с большими объемами данных. Используйте параметр -e для выбора протокола передачи, например SSH.
-
Исключение определенных файлов: С помощью параметра —exclude вы можете исключить определенные файлы или директории из синхронизации, что позволяет оптимизировать процесс. Например, можно исключить временные файлы или кэш.
-
Сжатие данных: Используя параметр -z, вы можете сжимать данные во время передачи, что также помогает экономить пропускную способность сети. Это особенно полезно для медленных соединений.
-
Поддержка SSH: Rsync может работать через SSH, что обеспечивает безопасность передаваемых данных и защищает их от несанкционированного доступа. Настройка SSH-ключей позволяет избежать ввода пароля при каждой передаче.
-
Отчет о выполнении: Вы можете использовать параметр -v для получения подробного отчета о процессе синхронизации, что помогает отслеживать статус копирования. Также можно добавить параметр —progress для отображения прогресса передачи.
-
Синхронизация по расписанию: С помощью cron вы можете настроить автоматическую синхронизацию данных в заданное время, что удобно для регулярных резервных копий. Просто добавьте команду rsync в crontab с нужной периодичностью.
-
Содержание статьи
Синтаксис
rsync [OPTION] SOURCE [DESTINATION]- SOURCE может быть локальной директорией, например, “/opt/backup”, или удаленным адресом, например, “[email protected]:/opt/remotedir/”.
- DESTINATION может быть локальным каталогом или папкой на удаленной системе.
- Обе части SOURCE и DESTINATION могут указывать на локальный каталог.
- Только одна из частей SOURCE или DESTINATION может быть удаленной; оба параметра не могут быть удаленными.
- rsync поддерживает множество опций, которые могут изменить поведение команды, например,
-aдля архивного режима,-vдля вывода информации о процессе и-zдля сжатия данных во время передачи. - Для исключения определенных файлов или директорий можно использовать опцию
--exclude, например,--exclude='*.tmp'. - Если необходимо выполнять синхронизацию с удаленным сервером по SSH, можно использовать опцию
-e ssh, например,rsync -avz -e ssh SOURCE [email protected]:/path/to/destination. - Опция
--progressпозволяет отслеживать процесс передачи данных и видеть, сколько осталось передать. - Для работы с большими объемами данных можно использовать опцию
--bwlimit=RATE, чтобы ограничить скорость передачи, что может быть полезно при работе в сетях с ограниченной пропускной способностью.
Опции команды Rsync
Rsync предоставляет множество полезных опций, которые позволяют настраивать его работу и делают процесс синхронизации более гибким. Ниже представлен список некоторых часто используемых опций:
Опция Описание -v, -vv, -vvv, —verbose Используйте для получения детализированных логов. Чем больше «v», тем больше информации. -a, —архив Популярный параметр. Он включает в себя опции для рекурсивного копирования, сохраняя права доступа, символические ссылки, права собственности и временные метки. -z, —сжать Передача данных в сжатом виде для экономии пропускной способности. -h, —читаемый человеком Выводит информацию в удобном для восприятия формате. —delete Удаляет файлы на целевом месте, которые отсутствуют в источнике. —exclude=ШАБЛОН Исключает файлы, которые соответствуют заданному шаблону. —include=ШАБЛОН Включает файлы, которые соответствуют заданному шаблону. -n, —dry-run Показывает, какие изменения будут произведены, без фактического выполнения операции. Полезно для проверки перед синхронизацией. —progress Отображает прогресс передачи файлов, включая скорость и оставшееся время. —bwlimit=КБИТ/СЕК Ограничивает скорость передачи данных, чтобы не перегружать сеть. —partial Сохраняет неполные файлы при прерывании передачи, что позволяет продолжить с того места, где остановились. Примеры Rsync
Представляем 12 практических примеров использования команды Rsync в системах Unix/Linux.
Rsync позволяет синхронизировать файлы между папками на локальном компьютере. Например, если у вас есть резервные файлы в каталоге /mnt/backup, и вы хотите скопировать или синхронизировать их на USB-накопитель, смонтированный в /mnt/disk1, используйте следующую команду для синхронизации всех файлов и папок из /opt/backup в /mnt/disk1.
rsync -avhz /opt/backup /mnt/disk1/sending incremental file list backup/ backup/tecadmin.22Mar2022.sql backup/tecadmin.22Mar2022.tar.gz backup/tecadmin.23Mar2022.sql backup/tecadmin.23Mar2022.tar.gz sent 1.09G bytes received 96 bytes 23.39M bytes/sec total size is 1.47G speedup is 1.35

С помощью rsync можно быстро копировать или синхронизировать файлы с локальных систем на удалённые. Например, если необходимо перенести веб-сайт на новый сервер, воспользуйтесь командой для копирования всех файлов из локального каталога /var/www/html в удалённый каталог /var/www/html на сервере с адресом 192.168.1.100.
rsync -avhz /var/www/html [email protected]:/var/www/html/Также rsync позволяет копировать файлы с удалённой директории в локальную. Например, если вам нужно скопировать резервные файлы из директории /backups на удалённой системе в локальную директорию /opt/backups.
rsync -avhz [email protected]:/backups /opt/backupsRsync устанавливает соединение с удалёнными системами через TCP, используя демон Rsync. Мы можем указать использовать защищённый шелл (SSH) для подключения. Для этого воспользуйтесь опцией -e, чтобы указать удалённый шелл. Пример команды, использующей ssh в качестве удалённого шелла:
rsync -avhz -e ssh /src [email protected]:/dest/Если вы хотите игнорировать файлы, которые уже существуют на целевом носителе, используйте опцию —ignore-existing. Это будет полезно, если вы планируете скрипт резервного копирования, который ежедневно копирует файлы на резервный диск, не копируя их повторно.
rsync -avhz --ignore-existing /opt/backups /mnt/disk1Для обновления файлов на удалённом сервере только если на локальном компьютере имеется более новая версия, используйте опцию —update. Rsync создаст файл на целевом устройстве, если его там нет, и обновит его, если локальная метка времени новее.
rsync --update -avhz /opt/backups /mnt/disk1/Используйте опцию —remove-source-files, чтобы удалить файл из источника после успешной передачи на место назначения. Это может быть полезно, например, для резервного копирования лог-файлов на удалённую систему, когда после копирования вы хотите удалить их с локальной системы, освобождая место на диске.
rsync --remove-source-files -avhz /var/log [email protected]:/backup/logs/Для исключения определённых файлов или шаблонов из rsync, можно воспользоваться опцией —exclude=PATTERN.
rsync -avh --exclude '*.zip' --exclude '*.log' /src [email protected]:/destПо умолчанию Rsync копирует все файлы из исходного каталога. Чтобы включить только определённые файлы для синхронизации, используйте —include=PATTERN, чтобы выбрать конкретные файлы и исключить остальные.
rsync -avhz --include '*.jpg' --include '*.txt' --exclude '*' /src [email protected]:/destОпция —progress позволяет видеть прогресс передачи файлов между источником и местом назначения во время работы с командой rsync.
rsync -avh --progress /src [email protected]:/destВы можете изменить владельца и группу файла на целевом устройстве, указав опцию —chown=USER.
rsync -avh --chown=USER:GROUP /src [email protected]:/destТакже можно использовать параметр —chmod=CHMOD для изменения прав доступа к файлам или директориям на целевом устройстве.
rsync -avh --chmod=755 /src [email protected]:/destИспользуйте опцию —dry-run для выполнения пробного запуска. Это покажет результаты, схожие с оригинальной командой, но без обновления целевого места. Это позволяет проверить, что именно обновит Rsync, перед его фактическим запуском.
rsync -avh --dry-run /src [email protected]:/destRsync также поддерживает многопоточность, что позволяет значительно ускорить передачу данных. Используйте опцию —parallel=N для указания количества потоков, где N — это количество параллельно выполняемых задач.
rsync -avh --parallel=4 /src [email protected]:/destЕсли вы хотите, чтобы Rsync выводил более подробную информацию о процессе, добавьте опцию -v. Это будет полезно при отладке или анализе работы скрипта.
rsync -avhv /src [email protected]:/destRsync позволяет также использовать фильтры, которые обеспечивают более тонкий контроль над тем, какие файлы копировать или исключать. С помощью опции —filter можно настроить сложные правила фильтрации.
rsync -avh --filter='merge /path/to/filter.rules' /src [email protected]:/destЭто особенно полезно для проектов с большим количеством временных файлов или каталогов, которые нужно исключить из резервного копирования.
Решение распространенных проблем с Rsync
Ошибка подключения: Если вы сталкиваетесь с трудностями при подключении к удаленному серверу, убедитесь, что адрес указан верно и доступен. Проверьте настройки брандмауэра и убедитесь, что необходимый порт открыт.
Недостаточно прав: При попытке синхронизации данных вы можете получить сообщение об ошибке, связанном с правами доступа. Убедитесь, что у вас есть соответствующие разрешения на чтение и запись для нужных директорий.
Синхронизация не происходит: Если файлы не синхронизируются, проверьте параметры вызова. Возможно, нужно использовать ключи для указания, какие именно файлы или каталоги должны быть обработаны.
Проблемы с символическими ссылками: Если вы заметили, что символические ссылки не работают корректно, попробуйте использовать ключи, которые позволяют правильно обрабатывать такие ссылки при копировании.
Неожиданные задержки: Длительное время выполнения может быть связано с сетевыми проблемами или большими объемами данных. Рассмотрите возможность использования сжатия или изменения режима работы для повышения скорости.
Конфликты при обновлении: При синхронизации файлов может возникнуть конфликт изменений. Чтобы избежать этого, используйте стратегии для разрешения конфликтов, такие как сохранение резервных копий.

