В командному рядку Linux існує багато інструментів для передачі файлів між двома комп’ютерами. Найпопулярніші такі програми – scp і rsync, які охоплять майже будь-який варіант використання. Ось як і коли їх використовувати.
Обидві команди scp і rsync переміщують файли між двома комп’ютерами. Основна відмінність між двома командами полягає не в тому, що вони роблять, а в тому, як вони це роблять.
Команда scp розшифровується як «захищена копія», і багато в чому вона працює як стандартна команда unix cp або copy, але між двома комп’ютерами. «Безпечний» у назві в цьому випадку стосується SSH, протоколу, який використовується для зв’язку з віддаленим комп’ютером.
Команда rsync використовує більш тонкий підхід. Хоча rsync скопіює файл на інший комп’ютер, якщо цього файлу на отримувачі ще немає, але будь-яка майбутня операція лише порівнюватиме відмінності між файлами на кожному комп’ютері. Якщо ви використовуєте rsync як частину сценарію резервного копіювання, робота лише зі зміненими файлами може заощадити багато часу та пропускної здатності.
Це не єдина відмінність. Команда rsync також є дещо стійкішою та може відновити з’єднання, якщо воно розривається під час передачі. У поєднанні з можливістю передавати лише відмінності це робить його набагато кращим для передач великих обсягів даних.
Як передавати файли за допомогою scp
Використовувати інструмент scp для переміщення окремих файлів між комп’ютерами дуже просто. Ця команда:
scp <filename> username@remotehost:/path/to/directory
Щоб скопіювати файл foo.txt на віддалений комп’ютер, ви можете використати команду нижче:
scp foo.txt kris@some-computer:/home/kris/
Щоб використати команду scp для копіювання цього файлу назад на ваш власний комп’ютер, використайте наступне:
scp kris@some-computer:/home/kris/foo.txt
Звичайно, у багатьох випадках ви захочете перемістити цілі каталоги файлів між комп’ютерами. Просто передайте прапорець -r, щоб скопіювати каталог рекурсивно:
scp -r dotfiles kris@some-computer:/home/kris/
Щоб рекурсивно скопіювати каталог із віддаленого комп’ютера, скористайтеся наступним:
scp -r kris@some-computer:/home/kris/dotfiles
Як передавати файли за допомогою rsync
Незважаючи на те, що rsync має багато вбудованих функцій, він робить обробку базових передач досить простим. Основна команда для копіювання файлу на віддалений комп’ютер така:
rsync <local-filename> user@remotehost:<remote-filename>
Отже, щоб скопіювати той самий файл foo.txt із наведеного вище прикладу scp, ви повинні використати таку команду:
rsync foo.txt kris@some-computer:foo.txt
У фоновому режимі rsync спробує використати з’єднання SSH і запитає у вас ім’я користувача та пароль. Після автентифікації почнеться передача.
І навпаки, скопіювати файл назад на локальний комп’ютер так само просто: