- 10 SCP Commands to Transfer Files/Folders in Linux
- Basic Syntax of SCP Command
- Provide the detailed information of the SCP process using the -v parameter
- Provide modification times, access times, and modes from original files
- Make file transfer faster using -C parameter
- Change SCP Cipher to Encrypt Files
- Limiting Bandwidth Usage with SCP Command
- Specify the Specific port to use with SCP
- Copy files inside directory recursively
- Disable progress meter and warning / diagnostic message
- Copy files using SCP through Proxy
- Select different ssh_config file
- If You Appreciate What We Do Here On TecMint, You Should Consider:
- SCP Команда Linux для Удалённого Копирования Файлов
- Синтаксис Примера SCP Команды
- SCP Команда: На Что Обратить Внимание
- SCP Команда и Копирование Файлов
- Локальный Файл в Удалённое Местоположение
- Удалённый Файл на Локальную Машину
- Удалённый Файл в Другое Удалённое Местоположение
- Итоги
10 SCP Commands to Transfer Files/Folders in Linux
Linux administrators should be familiar with the CLI environment. Since GUI mode in Linux servers is not common to be installed. SSH may be the most popular protocol to enable Linux administrators to manage the servers via remote secure way. Built-in with SSH command there is SCP command. SCP is used to copy file(s) between servers in a secure way.
10 Linux SCP Commands
Basic Syntax of SCP Command
The below command will read as “copy source_file_name” into “destination_folder” at “destination_host” using “username account”.
There are many parameters in the SCP command that you can use. Here are the parameters that may use on daily basis usage.
Provide the detailed information of the SCP process using the -v parameter
The basic SCP command without parameters will copy the files in the background. Users will see nothing unless the process is done or some error appears.
You can use the “-v” parameter to print debug information into the screen. It can help you debugging connection, authentication, and configuration problems.
Sample Output
Provide modification times, access times, and modes from original files
The “-p” parameter will help you with this. An estimated time and the connection speed will appear on the screen.
Sample Output
Make file transfer faster using -C parameter
One of the parameters that can faster your file transfer is the “-C” parameter. The “-C” parameter will compress your files on the go. The unique thing is the compression-only happens in the network. When the file has arrived at the destination server, it will be returning to the original size as before the compression happen.
Take a look at these commands. It is using a single file of 93 Mb.
Sample Output
Copying files without the “-C” parameter will result in 1661.3 seconds. You may compare the result to the command below which using the “-C” parameter.
Sample Output
As you can see, when you are using compression, the transfer process is done in 162.5 seconds. It is 10 times faster than not using the “-C” parameter. If you are copying a lot of files across the network, the “-C” parameter would help you to decrease the total time you need.
The thing that we should notice is that the compression method will not work on any files. When the source file is already compressed, you will not find any improvement there. Files such as .zip, .rar, pictures, and .iso files will not be affected by the “-C” parameter.
Change SCP Cipher to Encrypt Files
By default SCP using “AES-128” to encrypt files. If you want to change to another cipher to encrypt it, you can use the “-c” parameter. Take a look at this command.
The above command tells SCP to use the 3des algorithm to encrypt the file. Please be careful that this parameter using “-c” not “-C“.
Limiting Bandwidth Usage with SCP Command
Another parameter that may be useful is the “-l” parameter. The “-l” parameter will limit the bandwidth to use. It will be useful if you do an automation script to copy a lot of files, but you don’t want the bandwidth is drained by the SCP process.
The 400 value behind the “-l” parameter is mean that we limit the bandwidth for the SCP process to only 50 KB/sec. One thing to remember is that bandwidth is specified in Kilobits/sec (kbps). It is mean that 8 bits are equal to 1 byte.
While SCP counts in Kilobyte/sec (KB/s). So if you want to limit your bandwidth for SCP maximum of only 50 KB/s, you need to set it into 50 x 8 = 400.
Specify the Specific port to use with SCP
Usually, SCP is using port 22 as a default port. But for security reasons, you may change the port into another port. For example, we are using port 2249. Then the command should be like this.
Make sure that it uses capital “P” not “p” since “p” is already used for preserved times and modes.
Copy files inside directory recursively
Sometimes we need to copy the directory and all files/directories inside it. It will be better if we can do it in 1 command. SCP supports that scenario using the “-r” parameter.
When the copy process is done, at the destination server you will found a directory named “documents” with all its files. The folder “documents” is automatically created.
Disable progress meter and warning / diagnostic message
If you choose not to see progress meter and warning / diagnostic messages from SCP, you may disable it using the “-q” parameter. Here’s the example.
As you can see, after you enter the password, there is no information about the SCP process. After the process is complete, you will see a prompt again.
Copy files using SCP through Proxy
The proxy server is usually used in the office environment. Natively, SCP is not proxy configured. When your environment using a proxy, you have to “tell” SCP to communicate with the proxy.
Here’s the scenario. The proxy address is 10.0.96.6 and the proxy port is 8080. The proxy also implemented user authentication. First, you need to create the “
/.ssh/config” file. Second, you put this command inside it.
Then you need to create file “
/.ssh/proxyauth” which contains.
After that, you can do SCP transparently as usual.
Please notice that the corkscrew is might not be installed yet on your system. On my Linux Mint, I need to install it first, using the standard Linux Mint installation procedure.
For other yum-based systems, users can install corkscrew using the following yum command.
Another thing is that since the “
/.ssh/proxyauth” file contains your “username” and “password” in clear-text format, please make sure that the file can be accessed by you only.
Select different ssh_config file
For mobile users who often switch between the company networks and public networks, it will be suffering to always change settings in SCP. It is better if we can put a different ssh_config file to match our needs.
Here’s a sample scenario
Proxy is used in the company network but not in the public network and you regularly switch networks.
By default “ssh_config” file per user will be placed in “
/.ssh/config“. Creating a specific “ssh_config” file with proxy compatibility will make it easier to switch between networks.
When you are on the company network, you can use the “-F” parameter. When you are on a public network, you can skip the “-F” parameter.
That’s all about SCP. You can see man pages of SCP for more detail. Please feel free to leave comments and suggestions.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.
Источник
SCP Команда Linux для Удалённого Копирования Файлов
Безопасная передача файлов является приоритетом номер один для тех, кто используют VPS. SCP команда Linux позволяет выполнить безопасное копирование и перенос ваших файлов. И в этой статье мы расскажем, как это сделать.
Что такое команда SCP? Основанная на протоколе удаленного копирования (RCP) Berkeley Software Distribution (BSD), SCP (Secure Copy) представляет собой сетевой протокол передачи файлов, который позволяет легко и безопасно передавать/копировать файлы между удалённым и локальным хостом или двумя удалёнными местоположениями.
Full Stack-разработчики часто применяют эту команду Linux через её функции аутентификации и шифрования, а также отсутствие необходимости использовать сторонние хостинговые сервисы, такие как Github. SCP — это простой способ защитить данные от перехватчиков и сохранить их конфиденциальность.
По сути, SCP представляет собой смесь RCP и SSH (Secure Shell). Первый протокол обеспечивает выполнение операций копирования, а второй шифрует информацию и проверяет подлинность удалённых систем.
В отличие от Rsync, всё, что вам нужно для успешного использования командной строки SCP, это имя пользователя и пароль или секретная фраза для систем, участвующих в передаче. Это упрощает процесс, так как вам не нужно входить ни в одну из них.
Прокачайте ваш проект, воспользовавшись скидками на VPS-хостинг в Hostinger! Большой выбор планов, как для учебных, так и для крупных коммерческих проектов.
Синтаксис Примера SCP Команды
Пример базовой команды SCP выглядит следующим образом:
Слишком сложно? Давайте разбираться.
В этом примере мы выполняем передачу между двумя серверами VPS.
- [other options] — это модификаторы, которые вы можете добавить к команде SCP. Мы рассмотрим самые популярные из них немного позже.
- [source username@IP] — имя пользователя и IP-адрес компьютера, на котором находится нужный файл. На практике это будет выглядеть как-то так — root@123.123.123.12.
- :/ сообщает команде SCP, что вы собираетесь ввести исходный каталог.
- [directory and file name] — это место, где находится файл, и его название. На деле это выглядит так: /users/Olha/Desktop/SCP.png.
- [destination username@IP] — это имя пользователя и IP-адрес компьютера назначения.
- [destination directory] — каталог назначения, в который будет сохранён файл.
В реальном жизни SCP команда будет выглядеть так:
Видите, это довольно просто. Если вы копируете на локальный компьютер или с локального компьютера, вам не понадобится IP-адрес, место назначения или исходный путь, например, /desktop/folder_name.
Давайте поговорим о других опциях модификации этой утилиты. Существует 20 распространённых вариантов, которые можно использовать как в односимвольной форме (-o), так и в их описательном эквиваленте (–option). Вот список популярных модификаторов команды SCP в Linux:
- –P (port) позволяет указать нестандартный порт (порт по умолчанию — 22).
- –с (cipher) даёт возможность указать алгоритм шифрования, который будет использовать клиент. Некоторые из значений, которые вы можете использовать: “aes256-ctr”, “aes256-cbc”, “blowfish-cbc”, “arcfour”, “arcfour128”, “arcfour256”, “cast128-cbc”, “aes128-ctr”, “aes128-cbc”, “aes192-ctr”, “aes192-cbc” и “3des-cbc”. Параметром по умолчанию в конфигурации оболочки является “AnyStdCipher”.
- –q выполнит операцию в тихом режиме, это означает, что отображаться будут только критические ошибки.
- –r для рекурсивного копирования, которое будет включать все подкаталоги.
- -4 или -6 , если вы хотите выбрать используемую версию протокола: IPv4 или IPv6. Вы также можете более подробно настроить требования к IP-адресу с помощью ключевого слова address-family.
- –p сохранит начальное время изменения и атрибуты файла.
- –u удалит исходный файл после завершения передачи.
- –c включит сжатие данных во время операции передачи.
SCP Команда: На Что Обратить Внимание
Поскольку SCP использует шифрование SSH, для копирования файла вам потребуется пароль ssh. Кроме того, необходимо иметь право на чтение на машине, с которой вы собираетесь копировать, и право на запись на машине(ах), куда вы будете копировать.
Для аутентификации и настройки соединения вам нужно будет создать пару ключей ssh с помощью следующей команды:
Вы копируете этот ключ в удалённую систему, используя:
Открытый ключ будет скопирован сразу после аутентификации на удалённом(ых) компьютере(ах), после чего вы сможете выполнить перенос.
Если вы не помните пароль(и) root для какой-либо из систем, вы можете попросить клиента ssh выбрать файл, из которого закрытый идентификационный ключ для подтверждения RSA будет считываться автоматически.
Для протокола версии 2 дефолтный путь идентификации ключа хоста —
/.ssh/id_dsa , а для версии протокола 1 —
/.ssh/id_rsa. Затем нужно выяснить, где хранятся резервные копии закрытых и открытых ключей, чтобы вы могли применить команду ssh для их автоматического использования.
Для пути /back-up/home/jack/.ssh команда выглядит следующим образом:
Совет : значением по умолчанию этого параметра является –overwrite [yes] , поэтому, если вы не укажете опцию –overwrite no или –overwrite ask в своей команде scp, операция перезапишет файлы с одинаковыми названиями и местоположениями без каких-либо предупреждений.
Если вы копируете большие файлы, мы рекомендуем использовать сеанс tmux или запустить команду на другом экране. Кроме того, вы также должны использовать опцию -v. Это заставит scp отображать любые отладочные соединения, проблемы с аутентификацией или конфигурацией.
SCP Команда и Копирование Файлов
Самое замечательное в SCP то, что она даёт вам возможность передавать файлы между двумя хостами или между хостом и локальной машиной. Давайте посмотрим, как используется эта команда для каждого типа передачи.
Локальный Файл в Удалённое Местоположение
Мы скопируем локальный файл scp.zip на пользователя удалённого компьютера с названием root . За именем пользователя следует IP-адрес сервера.
Если у вас не настроено автоматическое подтверждение клиента ssh, вам будет предложено ввести пароль от пользователя удалённого компьютера, после чего вы увидите индикатор прогресса. Это будет выглядеть примерно так:
Но допустим, что удалённый компьютер настроен на прослушивание SSH-соединений через порт, отличный от порта по умолчанию 22. В этом случае вы должны указать этот порт с помощью параметра.
Если вы также хотите изменить имя файла во время копирования, то ваша команда будет выглядеть следующим образом (если ваш порт не является портом по умолчанию, просто добавьте –P и номер порта):
Если вы хотите скопировать каталог, содержащий файлы и/или подкаталоги, используйте параметр –r , описанный выше.
Удалённый Файл на Локальную Машину
В этом процессе источник и цель команды меняются местами, что должно отразиться на вашем синтаксисе. В этот раз мы пытаемся скопировать файл scp.zip с того же удалённого хоста на наш локальный компьютер:
Опять же, это должно вызвать тот же вывод входа в систему через SSH, где вы должны ввести пароль, если аутентификация не была отключена привилегиями sudo или вы не заставили ssh-клиент использовать закрытый ключ на вашем компьютере.
Удалённый Файл в Другое Удалённое Местоположение
Чтобы скопировать файлы с одного удалённого хоста на другой, вам нужно будет ввести пароли для обеих учётных записей после запуска этой команды в терминале.
Приведённая выше команда копирует исходный файл /writing/article/scp.zip с одного хоста на другой. Чтобы скопировать папки, просто добавьте параметр -r и укажите путь к папке, а не файл внутри неё, как мы делали раньше.
При нормальных обстоятельствах файл копируется непосредственно с одного удалённого хоста на другой. Однако, если вы хотите перенаправить операцию через ваш компьютер, вы можете добавить опцию -3 :
Итоги
В этой статье мы узнали, что такое SCP команда в Linux и, как с её помощью передавать файлы между удалёнными и локальными узлами. Это очень полезно, когда вы работаете с несколькими серверами. Протокол защищённого копирования, или SCP облегчает копирование информации с одного удалённого хоста на другой, поскольку вам не приходится входить в систему.
Кроме того, этот метод удалённой передачи файлов шифрует ваши данные с помощью безопасной оболочки (SSH), что обеспечивает конфиденциальность передаваемой вами информации.
Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.
Источник