Примеры команд scp в Linux
Используйте гибкость SSH-соединения для передачи файлов с помощью команды scp.
SCP читает протокол безопасного копирования, который использует SSH для безопасного копирования файлов по сети. Лично я нашел эту команду весьма полезной, поскольку постоянно экспериментирую с несколькими виртуальными машинами для тестирования.
Но вопрос в том, как использовать эту команду? Что ж, вы начнете с правильного синтаксиса и некоторых примеров. Чтобы узнать больше, нужно практиковаться, верно?
Не волнуйтесь, я поделюсь всем, что вам нужно, чтобы начать работу и улучшить работу с командой scp в Linux.
Вот как использовать команду scp в Linux
Давайте начнем с синтаксиса, вот формат команды scp:
scp [options] [user@]sourceIP:path/to/file [user@]destinationIP:path/to/destination
Синтаксис выглядит немного сложным. Верно? Не волнуйтесь, я разобью это на части для простоты понимания.
Здесь,
[options]
: он используется для настройки поведения команды scp по умолчанию, например, использования опции-r
для рекурсивного копирования файлов.[user@]sourceIP:path/to/file
: здесь вы указываете исходный IP-адрес компьютера, на котором находится файл, и указываете путь к файлу. Например, если я хочу скопировать файлsimple.txt
с IP-адреса198.168.1.1
, я буду использовать это:[email :path/to /simple.txt
.[user@]destinationIP:path/to/destination
: здесь вы указываете имя пользователя и IP-адрес, а также путь, по которому необходимо скопировать файл. Например, если я хочу скопировать файл на IP-адрес192.168.1.5
по адресу/home/files
, то я набираю следующее:[email protected ]:/home/files
.
Теперь, когда мы знаем основы, давайте взглянем на широко используемые параметры команды scp:
-P
Укажите порт для подключения к удаленному хосту.
-p
Сохранять время модификации и биты режима файла исходного файла.
-q
Включите тихий режим, чтобы подавить любые ошибки или предупреждающие сообщения.
-C
Заставьте SSH сжимать данные, отправляемые в пункт назначения.
-r
-
Копируйте файлы рекурсивно.
Подождите ✋
Прежде чем мы перейдем к примерам использования команды scp в Linux, следует помнить о трех вещах:
Как на удаленном, так и на локальном компьютере должен быть установлен SSH, если нет, вот как установить SSH в Ubuntu и других дистрибутивах на основе Debian.
Убедитесь, что вы знаете пароль удаленного компьютера и что брандмауэр (если он включен) настроен на разрешение SSH-подключений.
Вам необходимо знать IP-адрес или имя хоста удаленного компьютера.
Учитывая, что вы знаете основы, сейчас я расскажу вам о 10 практических способах использования команды scp в Linux, от базовых до расширенных примеров.
Итак, начнем с отправки файлов с локального компьютера на удаленный.
1. Отправьте файл с локального компьютера на удаленный компьютер.
Чтобы отправить файл с вашего локального компьютера на удаленный компьютер, вы можете использовать команду scp следующим образом:
scp /path/to/file [user@]destinationIP:path/to/destination
Да, если вы отправляете файлы на удаленный компьютер, вам не нужно указывать имя пользователя и IP-адрес источника.
Например, здесь я отправил файл Sample.txt
на свой удаленный компьютер внутри каталога ~/Documents
:
scp Sample.txt [email :~/Documents/
2. Отправьте файл с удаленного компьютера на локальный компьютер.
Чтобы отправить файл с удаленного компьютера на локальный компьютер, вы можете использовать команду scp следующим образом:
scp [user@]sourceIP:path/to/file /location/in/local/computer
Например, здесь я скопировал файл Sample.txt
с удаленного компьютера на локальный компьютер в моем домашнем каталоге:
scp [email :~/Sample.txt ~/
3. Отправка файлов между двумя удаленными компьютерами.
Если вы хотите отправлять файлы между двумя удаленными компьютерами, вам необходимо указать имя пользователя и IP-адрес обоих компьютеров, как показано:
scp [user@]sourceIP:path/to/file [user@]destinationIP:path/to/destination
Например, вот как я отправил myfiles.txt
с одного на другой удаленный компьютер с помощью команды scp:
scp [email :~/myfiles.txt [email :~/Documents/
В отличие от предыдущих примеров, когда вы отправляете файлы между двумя удаленными хостами, после отправки файла вам не будет выдан никакой вывод, поэтому вам придется проверить его вручную.
Именно по этой причине на приведенном выше снимке я вошел в виртуальную машину (в правом окне) и зафиксировал результат до и после выполнения команды scp, чтобы показать вам разницу.
4. Укажите порт SSH (если вы используете другой порт SSH)
По умолчанию SSH использует номер порта 22. Но если вы настроили удаленный хост на использование SSH на другом порту, вы можете использовать флаг -P
, чтобы указать порт:
scp -P <port> /path/to/local/file [user@]destinationIP:path/to/destination
Допустим, мой удаленный хост настроен на использование порта 2222, поэтому я буду использовать следующую команду для отправки файла с моего локального компьютера на удаленный хост:
scp -P 2222 ~/Sample.txt [email :~/
5. Сохраните время модификации с помощью scp
По умолчанию, когда вы отправляете файл через scp, время (время модификации) меняется на время получения файла, поэтому вы теряете эти важные детали.
Но хорошая новость заключается в том, что вы можете сохранить эти временные метки, используя флаг -p
(примечание: нижний регистр p), как показано здесь:
scp -p [user@]sourceIP:path/to/file [user@]destinationIP:path/to/destination
Например, здесь я отправил файл с локального компьютера на удаленный с флагом -p
для сохранения временных меток:
scp -p ~/Sample.txt [email :~/
Вот разница между отправкой файлов с флагом -p
и без него:
6. Отправить файл тихо (подавить выходные сообщения)
Если вы хотите игнорировать выходные сообщения, сообщения об ошибках и предупреждения при отправке файлов с помощью команды scp, вы можете использовать флаг -q
, как показано здесь:
scp [options] [user@]sourceIP:path/to/file [user@]destinationIP:path/to/destination
Для демонстрации я использовал флаг -q
при отправке файлов с локального компьютера на удаленный:
scp -q ~/Sample.txt [email :~/
7. Сжимайте файлы для более быстрой передачи
Нет, он не создаст сжатый архив вашего файла. Сжатие будет действительным для передачи файла. После этого он будет выглядеть и вести себя так же, как выбранный файл.
Чтобы сжать файл с помощью команды scp, вам нужно будет использовать флаг -C
, как показано здесь:
scp [options] [user@]sourceIP:path/to/file [user@]destinationIP:path/to/destination
Например, вот, я отправил видеофайл размером 3,4 гига, передача у меня заняла около полутора минут:
scp -C ~/Movie.mkv [email :~/
8. Отправьте весь каталог
В Linux это называется рекурсивной отправкой файлов, но с точки зрения непрофессионала вы также можете назвать это отправкой всего каталога.
Чтобы отправлять файлы рекурсивно, вы используете флаг -r
, как показано здесь:
scp -r [user@]sourceIP:path/to/directory [user@]destinationIP:path/to/destination
Например, здесь я хочу отправить каталог scp
, поэтому вот как я использовал флаг -r
для рекурсивной отправки всех файлов:
scp -r ~/scp/ [email :~/
Практические вопросы 📓
Вот несколько практических вопросов, к которым вы можете обратиться, чтобы лучше использовать команду scp:
Как бы вы отправили все файлы, оканчивающиеся на файл
.txt
, на удаленный сервер?Предположим, ваш удаленный сервер настроен на прослушивание SSH через порт номер 2345, как бы вы отправляли на него файлы?
Как скопировать весь каталог с помощью команды scp?
Как сжать длинный файл для эффективной передачи?
Как отправлять файлы между двумя удаленными серверами, сохраняя при этом время изменения?
Если у вас возникнут трудности с решением вышеуказанных вопросов, вы можете связаться с нами через комментарии или посетить форум нашего сообщества.
Дополнительные способы отправки файлов через SSH
Если вам нужны дополнительные возможности, но с гарантированной безопасностью SSH, обратитесь к нашему подробному руководству, объясняющему 4 способа отправки файлов через SSH:
Кроме того, вы можете изучить другие способы передачи файлов между разными платформами:
💬 Какой способ передачи файлов между системами вы предпочитаете? Считаете ли вы такую команду, как scp, удобной для вашего случая использования? Поделитесь своими мыслями в комментариях ниже.