Команда Linux rsync

Linux 命令大全Полный список команд Linux


Что такое команда rsync

rsync (Remote Sync) — это мощный инструмент синхронизации файлов в системах Linux. Он позволяет эффективно синхронизировать файлы и каталоги между локальными или удалёнными системами. rsync известен своим алгоритмом «инкрементальной передачи», который передаёт только различия между исходными и целевыми файлами, значительно повышая эффективность передачи файлов.

Основные возможности rsync

  1. Инкрементальная синхронизация: передаёт только изменённые части файлов, экономя пропускную способность и время
  2. Сохранение атрибутов: может сохранять метаданные, такие как права доступа к файлам и временные метки
  3. Сжатая передача: поддерживает сжатие данных при передаче, снижая нагрузку на сеть
  4. Гибкое исключение: может исключать определённые файлы или каталоги
  5. Поддержка удалённого доступа: безопасно синхронизировать файлы удалённого сервера через SSH

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

rsync [选项] 源文件 目标文件

Общие формы команд

Локальная синхронизация:

rsync -av /path/to/source/ /path/to/destination/

Синхронизация с локального на удалённый:

rsync -avz /local/path/ username@remote_host:/remote/path/

Синхронизация с удалённого на локальный:

rsync -avz username@remote_host:/remote/path/ /local/path/

Подробное объяснение общих опций rsync

Опция Полное название Описание
-a --archive Режим архива, сохраняет все атрибуты файлов (эквивалентно -rlptgoD)
-v --verbose Отображать подробную информацию о передаче
-z --compress Сжимать данные во время передачи
-r --recursive Рекурсивно копировать каталоги
-l --links Сохранять символические ссылки
-p --perms Сохранять права доступа к файлам
-t --times Сохранять время изменения файла
-g --group Сохранять группу файла
-o --owner Сохранять владельца файла
-D --devices Сохранять файлы устройств (только для суперпользователя)
-h --human-readable Выводить числа в удобочитаемом формате
--progress Показывать ход передачи
--delete Удалять файлы в месте назначения, которых нет в источнике
--exclude=PATTERN Исключить файлы, соответствующие PATTERN
--include=PATTERN Включить файлы, соответствующие PATTERN

Практические примеры применения rsync

Пример 1: Синхронизация локального каталога

Пример

# Синхронизировать /home/user/docs в /backup/docs, сохраняя все атрибуты
rsync -av /home/user/docs/ /backup/docs/

Примечание: Слэш после исходного каталога/очень важен:

  • Со слешем: синхронизировать содержимое каталога
  • Без слеша: синхронизировать сам каталог

Пример 2: Резервное копирование на удалённый сервер

Пример

# Синхронизация локального каталога с удалённым сервером с использованием сжатия
rsync -avz /data/backups/ user@example.com:/remote/backups/

Пример 3: Синхронизация с параметрами исключения

Пример

# Синхронизировать, но исключить файлы .tmp и каталог log
rsync -av --exclude='*.tmp' --exclude='log/' /source/ /destination/

Пример 4: Полная согласованность обоих концов (удаление лишних файлов на целевом узле)

Пример

rsync -av --delete /source/ /destination/

Расширенное использование rsync

1. Использование нестандартного порта SSH

Пример

rsync -avz -e 'ssh -p 2222' /local/path/ user@host:/remote/path/

2. Ограничение пропускной способности (ограничено до 500KB/s)

Пример

rsync -avz --bwlimit=500 /source/ /destination/

3. Частичная передача (передавать только файлы размером больше 100KB)

Пример

rsync -av --min-size=100K /source/ /destination/

4. Скрипт резервного копирования по расписанию

Пример

#!/bin/bash
rsync -avz --delete /important/data/ backup@server:/backups/data/
echo "Резервное копирование завершено в $(date)" >> /var/log/backup.log

rsync: часто задаваемые вопросы

Вопрос 1: В чем разница между rsync и scp?

  • rsync: инкрементальная синхронизация, передаёт только различия, подходит для регулярных резервных копий
  • scp: полная передача каждый раз, подходит для однократной передачи файлов

Q2: Как возобновить прерванную передачу rsync?

Используйте--partialопция для сохранения частично переданных файлов:

Пример

rsync -av --partial /source/ /destination/

Q3: Как посмотреть, что сделает rsync, без фактического выполнения?

Используйте-nопция (dry-run):

Пример

rsync -avn /source/ /destination/

Q4: Как улучшить скорость передачи rsync?

  1. Используйте-zопция для включения сжатия
  2. Используйте--compress-level=Nнастройка уровня сжатия (1-9)
  3. Отключить вычисление контрольной суммы (только для доверенных сетей):--no-checksum

Рекомендации по лучшим практикам

  1. Сначала протестируйте: используйте-nопция для предварительного пробного запуска
  2. Логирование: добавьте--log-file=rsync.logдля записи операций
  3. Управление правами доступа: рассмотрите использование--chmodдля унификации прав доступа к файлам
  4. Запланированные задачи: сочетайте с crontab для автоматического резервного копирования
  5. Безопасная передача: всегда выполняйте удалённую передачу через SSH

Итог

rsync — незаменимый инструмент для системных администраторов Linux и разработчиков. Его освоение позволяет вам:

  • Эффективно выполнять локальную и удалённую синхронизацию файлов
  • Внедрять решения для автоматического резервного копирования
  • Оптимизировать передачу данных по сети
  • Поддержание согласованности файловой системы

В этой статье вы должны были освоить базовое использование и продвинутые приёмы rsync. Рекомендуется больше практиковаться в реальной работе и постепенно открывать для себя другие мощные возможности rsync.

Linux 命令大全Полный список команд Linux

Другие расширения