rsync (Віддалена синхронізація) – це потужна та ефективна утиліта в Linux, яка використовується для синхронізації файлів і каталогів між двома місцями в мережі. Вона зазвичай використовується для резервного копіювання, дзеркального відображення даних і ефективного перенесення файлів, копіюючи лише відмінності між джерелом і місцем призначення.
У цьому посібнику ви дізнаєтесь про встановлення, базове використання та розширені можливості rsync, які допоможуть вам ефективно керувати файлами у мережі.
Більшість дистрибутивів Linux постачається з попередньо встановленим rsync. Щоб перевірити, чи його встановлено, виконайте
rsync --version
Якщо його не встановлено, ви можете встановити його за допомогою менеджера пакунків вашого дистрибутива:
sudo apt install rsync
sudo yum install rsync
sudo dnf install rsync
sudo pacman -S rsync
як перенести файли з Windows на віддалений сервер за допомогою rsync через PuTTY SSH?
Щоб використовувати rsync в Windows через PuTTY SSH, вам потрібно мати встановлену програму:
PuTTY для підключення поSSH
rsync і OpenSSH на Windows
Агент (необов’язково) для автоматичної автентифікації за допомогою ключа SSH
Якщо ви завантажили MSYS2, ви можете легко встановити rsync за допомогою pacman, менеджера пакетів MSYS2.
pacman -Syu
pacman -Su
✅ Цей крок гарантує, що ви маєте останню версію менеджера пакунків.
pacman -S rsync
якщо вам потрібен openssh для передачі по SSH, встановіть його також:
pacman -S openssh
Перевірте встановлення
Щоб перевірити правильність встановлення rsync, запустіть програму:
rsync --version
Базовий синтаксис rsync наступний:
rsync [опції] джерело призначення
Для синхронізації файлів між двома локальними каталогами:
rsync -av /джерело/каталог/ /призначення/каталог/
Кінцева коса риска / у джерелі гарантує, що буде скопійовано лише вміст каталогу, а не сам каталог.
Передача файлів з локальної системи на віддалений сервер:
rsync -avz /local/directory/ user@remote_host:/remote/directory/
*Після того, як ми додали команду в MSYS2, ми додамо дані SSH для підключення до віддаленого сервера і побачимо результат:
Ця команда безпечно копіює файли на віддалений сервер за допомогою SSH.
Перевірте, чи команда була успішно виконана на вашому віддаленому сервері:
Для копіювання файлів з віддаленого сервера на вашу локальну машину. За замовчуванням 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 у фоновому режимі за допомогою nohup:
nohup rsync -avz /source/ user@remote_host:/destination/ &
Це дозволить продовжити процес навіть після виходу з системи.
У директиві local ми додали новий файл new_file.txt33333333, після чого відключили термінал PuttySSH, і наведена вище команда дозволяє нам відправляти файли навіть при відключеному сервері.
Щоб запланувати автоматичну синхронізацію за допомогою cron, відкрийте файл crontab:
crontab -e
Додайте завдання для запуску rsync щодня опівночі:
0 0 * * * * rsync -avz /source/ user@remote_host:/destination/
rsync – це універсальний і потужний інструмент для синхронізації і передачі файлів по мережі. Незалежно від того, чи створюєте ви резервну копію даних, чи дзеркалюєте каталоги, чи переносите файли між серверами, rsync є ефективним і надійним рішенням. Використовуючи різноманітні опції та можливості автоматизації, ви зможете ефективно керувати файлами у середовищі Linux.