Синхронизация файлов между серверами с помощью rsync
rsync
— это мощная утилита для синхронизации файлов и директорий между двумя серверами или между локальной машиной и удаленным сервером. Она отличается высокой эффективностью, так как копирует только измененные файлы и поддерживает различные параметры для тонкой настройки.
Основные возможности rsync
Синхронизация файлов и директорий: Локально или между серверами.
Сжатие данных при передаче: Уменьшает объем передаваемых данных.
Сохранение прав доступа и атрибутов файлов.
Рекурсивное копирование: Поддержка копирования целых директорий.
Установка rsync
rsync
На большинстве Linux-дистрибутивов rsync
уже установлен. Если нет, установите его:
На Debian/Ubuntu:
На CentOS/Fedora/RHEL:
Основной синтаксис rsync
rsync
Базовая команда rsync
выглядит следующим образом:
source
— исходная директория или файл.destination
— директория или файл назначения.
Примеры использования rsync
rsync
Пример 1: Синхронизация файлов между локальными директориями
Синхронизация директории /source/directory/
с директорией /destination/directory/
:
-a
(archive) — включает рекурсивное копирование и сохраняет все атрибуты файлов (права, владельцы, временные метки и т.д.).-v
(verbose) — выводит подробную информацию о процессе копирования.-h
(human-readable) — делает вывод более читаемым, например, показывает размеры файлов в КБ, МБ и т.д.
Пример 2: Синхронизация файлов с удаленного сервера на локальную машину
Чтобы синхронизировать директорию /remote/directory/
с удаленного сервера example.com
на локальную машину в директорию /local/directory/
:
Здесь:
username
— это имя пользователя на удаленном сервере.example.com
— доменное имя или IP-адрес удаленного сервера.:/remote/directory/
— путь к директории на удаленном сервере.
Пример 3: Синхронизация файлов с локальной машины на удаленный сервер
Если вам нужно синхронизировать локальную директорию /local/directory/
с удаленным сервером:
Пример 4: Синхронизация с удаленным сервером с использованием сжатия
Вы можете использовать сжатие для уменьшения объема передаваемых данных:
-z
(compress) — сжимает данные при передаче.
Пример 5: Удаление файлов на целевом сервере, если их нет на исходном
Для удаления файлов на целевом сервере, которых нет в исходной директории, добавьте флаг --delete
:
Использование rsync
через SSH
rsync
через SSHПо умолчанию rsync
использует SSH для передачи данных между серверами, что обеспечивает безопасное соединение. Однако, если вам нужно явно указать использование SSH:
Здесь -e "ssh -p 22"
указывает использование SSH на порту 22. Если SSH-сервер на удаленной машине работает на нестандартном порту, его можно указать здесь.
Использование rsync
для инкрементной резервной копии
rsync
для инкрементной резервной копииrsync
можно использовать для создания инкрементных резервных копий. Это означает, что каждый запуск rsync
будет копировать только измененные файлы:
--progress
— показывает прогресс копирования файлов.
Планирование синхронизации с помощью cron
cron
Для регулярной синхронизации файлов можно использовать планировщик задач cron
. Например, чтобы синхронизировать директорию каждый день в 2:00 ночи:
Откройте cron для редактирования:
Добавьте строку:
Теперь rsync
будет запускаться автоматически в указанное время.
Проверка перед выполнением
Если вы хотите сначала проверить, какие файлы будут скопированы или изменены, можно использовать флаг --dry-run
:
Этот флаг позволит увидеть изменения без их фактического применения.
Оптимизация производительности
Сжатие (
-z
): Использование сжатия для уменьшения объема передаваемых данных.Исключение файлов (
--exclude
): Исключение ненужных файлов из синхронизации, например:
Теперь вы знаете, как использовать rsync
для синхронизации файлов между серверами. Этот инструмент эффективен, гибок и широко применяется для резервного копирования и управления файлами в среде Linux.
Last updated