Обновить настройки cookies

Руководство по копированию данных с помощью Rsync в Linux

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

Преимущества rsync:
  • Эффективность: копирует только различия;
  • Гибкость: поддерживает локальные и удалённые операции через SSH;
  • Надёжность: сохраняет права, владельцев и ссылки.

Установка rsync

В большинстве современных дистрибутивов Linux утилита rsync уже установлена. Проверьте её наличие:
rsync --versionЕсли команда выводит версию (например, 3.2.7), переходите к следующему разделу. Если нет — установите.
  • Ubuntu/Debian:
    apt install rsync
  • CentOS/RHEL:
    yum install rsync
  • Arch Linux:
    pacman -S rsync
Проверьте установку:
rsync --version

Базовое копирование локальных данных

Для копирования локальной директории используйте:
rsync -av /source_directory/ /target_directory/
  • -a (archive) — сохраняет права, владельцев, ссылки и структуру;
  • -v (verbose) — показывает процесс копирования.
Слэш в конце /source_directory/ важен: без него копируется сама директория, с ним — её содержимое.

Пример: копирование /home/user/docs в /backup:
rsync -av /home/user/docs/ /backup/
Убедитесь, что файлы скопированы:
ls -l /backupДля обновления копии повторите команду — rsync перенесёт только изменения.

Копирование на удалённый сервер

Копирование с локального на удалённый сервер

Для передачи данных на сервер:
rsync -avz /source_directory/ пользователь@адрес_сервера:/target_directory/
Пример: копирование /home/user/docs на сервер:
rsync -avz /home/user/docs/ [email protected]:/home/user/backup/

Копирование с удалённого сервера на локальный

Для обратной операции:
rsync -avz пользователь@адрес_сервера:/source_directory/ /target_directory/
  • -z (compress) - сжимает данные файла во время передачи для экономии трафика при копировании.

Пример: скачивание /var/www с сервера:
rsync -avz [email protected]:/var/www/ /home/user/www_backup/

Работа с нестандартным портом

Если сервер использует нестандартный порт SSH (например, 2222), укажите его с помощью опции -e:
rsync -av -e "ssh -p 2222" /source_directory/ пользователь@адрес_сервера:/target_directory/
Пример:
rsync -av -e "ssh -p 2222" /home/user/docs/ [email protected]:/home/user/backup/
Внимание: Убедитесь, что порт открыт в настройках файрвола например:
ufw allow 2222

Продвинутые возможности rsync

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

Чтобы пропустить определённые файлы или директории, используйте --exclude:
rsync -av --exclude '*.log' /source_directory/ /target_directory/
Пример: исключение логов и временных файлов:
rsync -av --exclude '*.log' --exclude 'temp/' /home/user/docs/ /backup/

Сжатие данных

Для экономии трафика при удалённом копировании добавьте -z (compress):
rsync -avz /source_directory/ пользователь@адрес_сервера:/target_directory/

Удаление лишних файлов

Чтобы синхронизировать директории с удалением файлов, которых нет в источнике, используйте --delete:
rsync -av --delete /source_directory/ /target_directory/Внимание: Используйте --delete осторожно — удалённые файлы нельзя восстановить без резервной копии.

Типичные ошибки и их устранение

Ошибка: rsync: command not found
Причина: утилита не установлена. Установите её, например, для Debian:
apt install rsync
Ошибка: Permission denied
Причина: недостаточно прав. Запустите с sudo или проверьте права:
chmod 755 /путь
Ошибка: Connection refused
Причина: SSH-сервер недоступен. Проверьте подключение:
ssh пользователь@адрес_сервера

Автоматизация копирования с rsync

Настройте автоматическое копирование через cron. Откройте редактор:
crontab -e
Добавьте задание (например, копирование каждый день в 2:00):
0 2 * * * rsync -av /home/user/docs/ /backup/

Полезные советы

  • Проверяйте копирование в тестовом режиме с --dry-run: rsync -av --dry-run /источник/ /назначение/
  • Используйте --progress для отображения прогресса: rsync -av --progress /источник/ /назначение/

Заключение

Rsync — универсальный инструмент для копирования и синхронизации данных. Мы рассмотрели его установку, базовые и продвинутые команды, а также автоматизацию. Используйте эти рекомендации для создания резервных копий или передачи данных на сервер. Рекомендуется протестировать команды и проанализировать результат — это поможет освоить rsync на практике.
07 Apr 2025, 16:04:12