Как использовать утилиту rsync в Linux для управления файлами по сети

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

В этом руководстве вы узнаете об установке, базовом использовании и расширенных методах работы с rsync, которые помогут вам эффективно управлять файлами по сети.

Установка rsync

Большинство дистрибутивов Linux поставляются с предустановленным rsync. Чтобы проверить, установлен ли он, выполните команду:

rsync --version

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

  • Debian/Ubuntu:
    sudo apt install rsync
  • RHEL/CentOS:
    sudo yum install rsync
  • Fedora:
    sudo dnf install rsync
  • Arch Linux:
    sudo pacman -S rsync

📌 Как передать файлы с Windows на удаленный сервер с помощью rsync через PuTTY SSH?
Чтобы использовать rsync в Windows через PuTTY SSH, вам необходимо установить:

PuTTYдляSSH-соединения
rsync и OpenSSH в Windows
Pagent (опционально) для автоматической аутентификации с помощью ключа SSH

Установите rsync в Windows с помощью MSYS2

Если вы загрузили MSYS2, вы можете легко установить rsync с помощью pacman, менеджера пакетов MSYS2.

  • Обновите MSYS2 и существующие пакеты
    В терминале MSYS2 выполните команду:

pacman -Syu

  • Если после обновления MSYS2 автоматически закрывается, откройте его снова и запустите:

pacman -Su
✅ Этот шаг гарантирует, что у вас установлена последняя версия менеджера пакетов.

  • Установите rsync
    Теперь установите rsync с помощью:

pacman -S rsync


💡 Если вам нужен openssh для передачи данных по SSH, установите и его:

pacman -S openssh

 Проверка установки
Чтобы убедиться, что rsync был установлен правильно, выполните команду:

rsync --version

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

Основной синтаксис rsync следующий:

rsync [options] source destination

Часто используемые опции

  • a: Режим архивации (сохраняет символические ссылки, права доступа, временные метки и т.д.)
  • v: Вывод подробной информации
  • z : Сжимать данные файла во время передачи
  • P: Показать прогресс во время передачи
  • r: Рекурсивно копировать каталоги
  • e : Указать удаленную оболочку (например, SSH)

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

Для синхронизации файлов между двумя локальными каталогами:

rsync -av /source/directory/ /destination/directory/

Конечная косая черта / в источнике гарантирует, что будет скопировано только содержимое каталога, а не сам каталог.

Использование rsync по сети

Передача файлов на удаленный сервер

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

rsync -avz /local/directory/ user@remote_host:/remote/directory/ *После добавления команды в MSYS2 мы добавим данные SSH для подключения к удаленному серверу и получим результат  

Эта команда безопасно копирует файлы на удаленный сервер с помощью SSH.

Проверьте, успешно ли выполнена команда на удаленном сервере:

ls -lah /home/user/test_backup/ [put_your_directory]

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

Чтобы скопировать файлы с удаленного сервера на локальную машину, выполните следующие действия. По умолчанию rsync использует SSH для безопасной связи. Вы можете явно указать SSH с помощью:

rsync -avz -e ssh /local/directory/ user@remote_host:/remote/directory/

Если SSH использует порт не по умолчанию (например, 2222), укажите его следующим образом:

rsync -avz -e "ssh -p 2222" /local/directory/ user@remote_host:/remote/directory/

Синхронизация и удаление лишних файлов

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

Первым шагом мы добавим дополнительные файлы в терминале PuttySSH:

cd /home/user/test_backup/

touch file1.txt file2.log file3.jpg

mkdir extra_files

touch extra_files/old_file.txt

Теперь синхронизируйте каталог без определенных файлов, и rsync удалит файлы, которых больше нет в источнике:

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

📌 Что это делает?
Все файлы, которые находятся на сервере, но НЕ в test/local, будут удалены.

Результат MSYS2

Результат PuttySSH

Внимание: Используйте –delete с осторожностью, так как он навсегда удаляет файлы из места назначения.

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

Чтобы исключить определенные файлы или каталоги:

rsync -av --exclude 'file_or_directory' /source/ user@remote_host:/destination/
Результат MSYS2

Результат PuttySSH

Для нескольких исключений используйте:

rsync -av --exclude={'file1','dir1','*.log'} /source/ user@remote_host:/destination/

Запуск rsync в качестве фонового процесса

Вы можете запустить rsync в фоновом режиме с помощью nohup:

nohup rsync -avz /source/ user@remote_host:/destination/ &amp

Это позволит продолжить процесс даже после выхода из системы.

В директиве local мы добавили новый файл new_file.txt3333333333, затем отключили терминал PuttySSH, и приведенная выше команда позволяет нам отправлять файлы даже при отключенном сервере.

Автоматизация передачи файлов с помощью заданий Cron

Чтобы запланировать автоматическую синхронизацию с помощью cron, откройте crontab:

crontab -e

Добавьте задание для запуска rsync каждый день в полночь:

0 0 * * * rsync -avz /source/ user@remote_host:/destination/

Заключение

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