rsync (Remote Sync) – это мощная и эффективная утилита в 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
Pagent (опционально) для автоматической аутентификации с помощью ключа SSH
Если вы загрузили MSYS2, вы можете легко установить rsync с помощью pacman, менеджера пакетов MSYS2.
pacman -Syu
pacman -Su
✅ Этот шаг гарантирует, что у вас установлена последняя версия менеджера пакетов.
pacman -S rsync
💡 Если вам нужен openssh для передачи данных по SSH, установите и его:
pacman -S openssh
Проверка установки
Чтобы убедиться, что rsync был установлен правильно, выполните команду:
rsync --version
Основной синтаксис rsync следующий:
rsync [options] source destination
Для синхронизации файлов между двумя локальными каталогами:
rsync -av /source/directory/ /destination/directory/
Конечная косая черта / в источнике гарантирует, что будет скопировано только содержимое каталога, а не сам каталог.
Чтобы передать файлы с локальной системы на удаленный сервер, выполните следующие действия:
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/
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 в фоновом режиме с помощью nohup:
nohup rsync -avz /source/ user@remote_host:/destination/ &
Это позволит продолжить процесс даже после выхода из системы.
В директиве local мы добавили новый файл new_file.txt3333333333, затем отключили терминал PuttySSH, и приведенная выше команда позволяет нам отправлять файлы даже при отключенном сервере.
Чтобы запланировать автоматическую синхронизацию с помощью cron, откройте crontab:
crontab -e
Добавьте задание для запуска rsync каждый день в полночь:
0 0 * * * rsync -avz /source/ user@remote_host:/destination/
rsync – это универсальный и мощный инструмент для синхронизации и передачи файлов по сети. Будь то резервное копирование данных, зеркалирование каталогов или перенос файлов между серверами, rsync обеспечивает эффективное и надежное решение. Используя различные опции и возможности автоматизации, вы сможете эффективно управлять файлами в среде Linux.