Использование rsync для синхронизации файлов

Использование rsync для синхронизации файлов

2025-05-15

rsync — это мощный инструмент для синхронизации и передачи файлов между локальной и удаленной системами. Он позволяет эффективно копировать файлы и каталоги, используя алгоритм, который минимизирует объем передаваемых данных.

Установка rsync

На большинстве Linux-дистрибутивов rsync уже установлен. Если он отсутствует, вы можете установить его с помощью пакетного менеджера:

Для Debian/Ubuntu

1
sudo apt-get install rsync

Для CentOS/Fedora

1
sudo yum install rsync

Основной синтаксис

1
rsync [опции] источник назначение

Примеры использования

1. Перекачивание файлов с удаленного сервера на локальную машину

Чтобы скопировать файл с удаленного сервера на вашу локальную машину, используйте следующую команду:

1
rsync -avz username@remote_host:/path/to/remote/file /path/to/local/directory
  • username — ваше имя пользователя на удаленном сервере.
  • remote_host — IP-адрес или доменное имя удаленного сервера.
  • /path/to/remote/file — путь к файлу на удаленном сервере.
  • /path/to/local/directory — путь к директории на вашей локальной машине, куда будет скопирован файл.

2. Перекачивание файлов с локальной машины на удаленный сервер

Чтобы скопировать файл с локальной машины на удаленный сервер, используйте:

1
rsync -avz /path/to/local/file username@remote_host:/path/to/remote/directory
  • /path/to/local/file — путь к файлу на вашей локальной машине.
  • /path/to/remote/directory — путь к директории на удаленном сервере, куда будет скопирован файл.

3. Синхронизация каталогов

Для синхронизации целого каталога используйте флаг -r (рекурсивно):

1
rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/directory/

Обратите внимание на слэш в конце пути к локальному каталогу. Он указывает на то, что содержимое каталога должно быть скопировано, а не сам каталог.

4. Исключение файлов

Если вы хотите исключить определенные файлы или директории, используйте параметр --exclude:

1
rsync -avz --exclude='*.tmp' /path/to/local/directory/ username@remote_host:/path/to/remote/directory/

5. Синхронизация с удаленного сервера на локальную машину с использованием SSH

По умолчанию rsync использует SSH для передачи данных. Вы можете явно указать это с помощью параметра -e:

1
rsync -avz -e ssh username@remote_host:/path/to/remote/file /path/to/local/directory

Описание параметров

  • -a — архивный режим; включает в себя рекурсивное копирование и сохраняет символические ссылки, права доступа, временные метки и т. д.
  • -v — выводит подробную информацию о процессе копирования (verbose).
  • -z — сжимает данные во время передачи, что может ускорить процесс при медленном соединении.
  • -r — рекурсивное копирование каталогов.
  • --exclude — исключает указанные файлы или директории из копирования.
  • -e — указывает удаленный shell, используемый для соединения (например, SSH).