Як використовувати утиліту rsync в Linux для керування файлами по мережі

rsync (Віддалена синхронізація) – це потужна та ефективна утиліта в 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
Агент (необов’язково) для автоматичної автентифікації за допомогою ключа 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 [опції] джерело призначення

Найпоширеніші параметри

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

Використання rsync для локальної синхронізації файлів

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

rsync -av /джерело/каталог/ /призначення/каталог/

Кінцева коса риска / у джерелі гарантує, що буде скопійовано лише вміст каталогу, а не сам каталог.

Використання rsync по мережі

Передача файлів на віддалений сервер

Передача файлів з локальної системи на віддалений сервер:

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

*Після того, як ми додали команду в MSYS2, ми додамо дані SSH для підключення до віддаленого сервера і побачимо результат:
Ця команда безпечно копіює файли на віддалений сервер за допомогою SSH.

Перевірте, чи команда була успішно виконана на вашому віддаленому сервері:

ls -lah /home/user/test_backup/ [покласти_ваш_каталог]

Перенесення файлів з віддаленого сервера на локальну машину

Для копіювання файлів з віддаленого сервера на вашу локальну машину. За замовчуванням 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/

торкніться file1.txt file2.log file3.jpg

mkdir extra_files

торкніться extra_files/old_file.txt

Тепер синхронізуйте каталог без певних файлів, і rsync видалить файли, яких більше немає у джерелі:

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

що це робить?
Всі файли, які знаходяться на сервері, але НЕ в тестовому/локальному каталозі, будуть видалені.

Результат 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/ &

Це дозволить продовжити процес навіть після виходу з системи.

У директиві local ми додали новий файл new_file.txt33333333, після чого відключили термінал PuttySSH, і наведена вище команда дозволяє нам відправляти файли навіть при відключеному сервері.

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

Щоб запланувати автоматичну синхронізацію за допомогою cron, відкрийте файл crontab:

crontab -e

Додайте завдання для запуску rsync щодня опівночі:

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

Висновок

rsync – це універсальний і потужний інструмент для синхронізації і передачі файлів по мережі. Незалежно від того, чи створюєте ви резервну копію даних, чи дзеркалюєте каталоги, чи переносите файли між серверами, rsync є ефективним і надійним рішенням. Використовуючи різноманітні опції та можливості автоматизації, ви зможете ефективно керувати файлами у середовищі Linux.