Я тут недавно мигрировал старые заметки по rsync на основном сайте Unix Tutorial, и вспомнил: вот про копирование rsync с помощью ssh я так ещё и не рассказывал.
Изначально rsync был создан для синхронизации локальных каталогов, потом его расширили для работы с внешними устройствами и файловыми системами, потом добавили поддержку сетевых устройств и в конце концов реализовали собственный протокол синхронизации с удалёнными серверами (который так и назывался: rsync protocol).
Зачем Нужна Синхронизация rsync Через SSH
Подавляющее большинство современных Linux систем поддерживают протокол удалённого доступа SSH. И все более-менее современные реализации поддерживают rsync через SSH, ведь это даёт вам лучшее из двух миров: можно сихнронизировать удалённые сервера И ПРИ ЭТОМ передача данных будет надёжно защищена стандартными методами SSH.
В дополнение ко всему этому, использование транспорта SSH для rsync даёт ещё два преимущества по сравнению с протоколом rsync:
На удалённом сервере не нужно запускать никаких демонов rsyncd
Как следствие из предыдущего пункта, открывать дополнительный порт на файрволах тоже не придётся (речь о порте 873/tcp дя rsyncd) - потому что можно обойтись стандартным портом SSH port 22.
Как Работать с rsync через SSH
В большинстве случаев, никаких дополнительных движений и опций не нужно - rsync сам всё сообразит. Но если уж очень важно, то стоит указать ssh транспорт с помощью опции -e:
newscripts имя локльного каталога, который я хочу скопировать
becky это удалённый сервер - одна из моих систем на базе Raspberry Pi
/home/greys/scripts это название удалённого каталога на сервере becky
Поведение rsync в данной ситуации будет такого: полная копия содержимого локального каталога newscripts окажется в каталоге /home/greys/scripts на удалённой системе becky.
Ну, давайте запустим:
$rsync -avhz-e ssh newscripts becky:/home/greys/scripts
sending incremental file list
created directory /home/greys/scripts
newscripts/
newscripts/automount.sh
newscripts/backups.sh
newscripts/jkl.sh
newscripts/mtime-capto.sh
newscripts/mtime-capto2.sh
newscripts/mtime-screenshot.sh
newscripts/mtime-voila.sh
newscripts/mtime.sh
newscripts/plex-mpv.sh
sent 3.75K bytes received 233 bytes 1.14K bytes/sec
total size is 7.44K speedup is 1.87
Основная Польза от RSync
Естетсвенно, основная польза - это синхронизация двух указанных катлогов с файлами. Если я изменю какие-то файлы у меня в местном каталоге newscripts, мне не придётся копировать заново всю папку на удалённый сервер - rsync сверит файлы по имени, размеру и содержимому - и скопирует только то, что действительно нужно обновить на удалённой системе.
И перезапустим rsync. Как видно, теперь команда спорировала не всё, а только новые файлы:
$rsync -avhz-e ssh newscripts becky:/home/greys/scripts
sending incremental file list
newscripts/jkl.sh
newscripts/mtime.sh
sent 814 bytes received 67 bytes 195.78 bytes/sec
total size is 7.45K speedup is 8.46
Надеюсь, это когда-нибудь вам пригодится! До скорого!
Заходите на страницу Facebook или присоединяйтесь к чату в Telegram:
Я использую браузер Brave
Попробуйте сами:
IT Консалтинг
У меня есть консалтинговая компания: Tech Stack Solutions. Я помогаю планировать и создавать облачные решения на базе AWS и помогаю с развёртыванием и поддержкой сервисов на Unix/Linux. Свяжитесь со мной тут.