Использование команды scp в Linux: 10 объяснений практических примеров
Вот несколько практических и важных примеров команды scp, показывающих, как безопасно копировать файлы между удаленными системами Linux.
Вероятно, вы уже знакомы с командой cp в Linux, которая используется для копирования файлов в Linux. Команду cp можно использовать только на локальном компьютере.
А как насчет копирования файлов из удаленной системы Linux? Чтобы скопировать файлы с удаленного сервера или на удаленный сервер, вы можете использовать команду scp.
Интересный факт: scp — это сокращенная форма слова «Защищенная копия».
синтаксис команды scp
Синтаксис и использование команды scp аналогичны команде cp, и вскоре вы увидите ее в этих примерах команд scp.
Но сначала давайте посмотрим на синтаксис команды scp:
scp <options> source_path destination_path
В зависимости от происхождения копируемого файла, источником может быть клиент или сервер. Если источником является клиент, то местом назначения является сервер и наоборот.
Но это звучит слишком просто, не так ли? Основное внимание команды scp уделяется использованию правильного формата исходного или целевого пути.
Типичный путь к файлу или каталогу на сервере представляется в таком формате:
<username>@<ip_address_of_system>:<path_to_the file/directory>
На самом деле вы также можете использовать user@hostname в команде scp, но более вероятно, что вы получите ошибку «Не удалось разрешить имя хоста».
Это связано с тем, что сопоставление имени хоста с IP-адресом зависит от сетевой конфигурации сети сервера. Использование фактического IP-адреса избавит вас от проблем.
Что следует иметь в виду перед использованием команды scp
Вот несколько вещей, которые вам понадобятся, прежде чем вы сможете использовать команду scp в своей системе Linux:
Убедитесь, что ssh установлен и работает как на клиентском, так и на серверном компьютере, поскольку команда scp внутренне использует ssh. Если ssh не установлен, установите его с помощью команды “sudo apt install ssh” на компьютерах под управлением Debian или с помощью соответствующих менеджеров пакетов вашего дистрибутива.
Вам необходимо знать IP-адрес удаленной системы или имя хоста (если это одна и та же подсеть).
Вам необходимо знать имя пользователя и пароль удаленной системы. Вам будет предложено ввести пароль удаленного хоста. Передача файлов начнется только после ввода правильного пароля удаленного хоста.
Использование команды scp в Linux: 10 практических примеров
Теперь, когда мы рассмотрели синтаксис команды scp и формат указания пути к серверу, давайте теперь посмотрим, как использовать команду scp.
1. Копирование файла в удаленную систему с помощью команды scp.
Чтобы скопировать один файл с локального компьютера на удаленный хост, укажите путь к файлу в качестве исходного пути и путь на удаленном хосте, куда файл должен быть скопирован.
scp abc.txt xyz@<ip_address_of_xyz>:/home/xyz/Desktop
2. Копирование файла из удаленной системы с помощью команды scp.
Копирование файла из удаленной системы в локальную систему практически то же самое. Вам просто нужно указать полный путь к файлу в удаленной системе и путь в локальной системе.
Итак, чтобы скопировать файл из удаленной системы в текущий каталог, просто используйте команду следующим образом:
scp xyz@<ip_address_of_xyz>:/remote/user/home/abc.txt .
3. Копирование нескольких файлов с помощью команды scp
Чтобы скопировать несколько файлов с локального компьютера на хост, просто укажите имена файлов в качестве исходного пути.
scp abc.txt def.txt xyz@<ip_address_of_xyz>:/home/xyz/Desktop
4. Копирование всего каталога с помощью команды scp
Копирование каталога с помощью scp аналогично команде cp. Вы можете использовать опцию -r и указать имя папки в качестве исходного пути. Это называется рекурсивным режимом.
scp -r ~/Desktop/test xyz@<ip_address_of_xyz>:/home/xyz/Desktop
Вы также можете указать несколько каталогов и скопировать их все одной командой.
5. См. сведения о передаче файлов в выходных данных.
Если вам интересно узнать, что происходит за кулисами во время копирования, вы можете использовать опцию -v, чтобы увидеть все выполняемые процессы, включая отладку, статус выхода, шифрование, дешифрование и т. д. Это называется подробный режим.
scp -v abc.txt xyz@<ip_address_of_xyz>:/home/xyz/Desktop
6. Копирование файлов на два удаленных хоста
До сих пор вы видели, как копировать файлы с локального компьютера на удаленный компьютер.
Чтобы скопировать файлы с одного удаленного компьютера на другой удаленный компьютер, укажите пути источника и места назначения в формате удаленного компьютера, как описано выше.
scp abc@<ip_address_of_abc>:<path_of_file_or_folder> xyz@<ip_address_of_xyz>:<path_of_file_or_folder
Излишне говорить, что здесь вам нужно знать пароли обеих систем.
7. Копирование файлов со сжатием [уменьшает время передачи]
Если вы попытаетесь скопировать несколько файлов вместе, это займет больше времени, чем передача одного файла, размер которого эквивалентен сумме всех отдельных файлов.
Если вы чувствуете, что вам необходимо увеличить скорость передачи файлов, вы можете сжать файлы, используя опцию -C, и перенести файлы.
Самое приятное то, что сжатие происходит только во время передачи. После завершения передачи файлы будут сохранены в исходном виде. Вы увидите не архивный файл, а все отдельные файлы в том виде, в каком они были на удаленном сервере.
scp -C abc.txt xyz@<ip_address_of_xyz>:/home/xyz/Desktop
8. Ограничение пропускной способности передачи файлов
Если вы чувствуете, что передача файлов использует большую часть пропускной способности, вы можете уменьшить пропускную способность передачи файлов, используя параметр -l, за которым следует новая скорость полосы пропускания.
scp -l 800 abc.txt xyz@<ip_address_of_xyz>:/home/xyz/Desktop
Обратите внимание, что пропускная способность, которую вы указываете в команде, измеряется в килобитах в секунду, но при передаче файлов выходные данные команды scp будут показывать скорость передачи в килобайтах в секунду.
Поскольку 1 байт=8 бит, 8300 килобит в секунду в параметре команды вскоре становятся 100 килобайтами в секунду в выходных данных команды.
9. Сохранение исходных атрибутов скопированных файлов
Если вам необходимо сохранить исходные атрибуты файла, такие как права доступа к файлу и право собственности, временные метки файла и т. д., используйте опцию -p.
scp -p abc.txt xyz@<ip_address_of_xyz>:/home/xyz/Desktop
10. Скрытие вывода команды scp
Если вас не устраивает длинный вывод команды scp, вы можете избежать вывода команды, используя опцию -q. Это называется режимом тишины.
Он даже скрывает ход копирования файлов.
scp -q abc.txt xyz@<ip_address_of_xyz>:/home/xyz/Desktop
В приведенных выше примерах вы видели, как скопировать файлы на удаленный хост с локального компьютера. Если вам нужно скопировать файлы с удаленного хоста на локальный компьютер, напишите путь к файлу/папке, который нужно скопировать с удаленного хоста, в качестве исходного пути и путь, по которому файл/папка должен быть вставлен на локальный компьютер, в качестве места назначения. путь.
Заключение
Более подробную информацию о команде scp можно найти на ее странице руководства.
Я надеюсь, что теперь вы понимаете, как наилучшим образом использовать команду scp для безопасного копирования файлов между компьютерами. Лично я предпочитаю использовать команду rsync вместо scp, потому что у rsync больше возможностей.
Однако, как и команда docker cp, scp имеет синтаксис, аналогичный обычной команде cp. И это делает его привлекательным выбором для многих пользователей Linux.
Если у вас возникнут какие-либо проблемы, не стесняйтесь задавать вопросы в разделе комментариев ниже. И если вы знаете еще какой-нибудь замечательный совет по команде scp, поделитесь им с остальными здесь.