Команда scp используется для безопасного копирования файлов. Принцип ее действия похож на работу команда cp за тем исключением, что для scp требуется полный сетевой путь, включая имена хоста и файла, который необходимо скопировать. Кроме того, если имя пользователя хоста отличается от имени пользователя на клиенте, то клиент также должен указать имя пользователя.
Копирования с клиента на хост выглядит следующим образом:
scp clientfile host:/hostfile
Данная команда копирует с компьютера-клиента clientfile на компьютер-хост с адресом "host" по пути hostfile.
Отмечу, что перед применением команды scp НЕ нужно вызывать команду ssh
Например:
eugene@Eugene:~$ scp ~/Documents/hello.txt 192.168.0.116:/home/eugene/Documents/client.txt eugene@192.168.0.116's password: hello.txt 100% 1572 132.9KB/s 00:00 eugene@Eugene:~$
Здесь со своего компьютера (клиента) я копирую файл ~/Documents/hello.txt на хост с адресом 192.168.0.116. И этот файл сохраняется по пути "/home/eugene/Documents/client.txt"
Если логин хоста отличается от логина клиента, то в адресе хоста также указывается логин пользователя на хосте:
scp ~/Documents/hello.txt eugene@192.168.0.116:/home/eugene/Documents/client.txt
Обратное копирование с хоста на клиент выглядит следующим обрахзом:
scp host:/hostfile clientfile
Здесь файл hostfile с компьютера-хоста копируется на компьютер-клиент по пути clientfile.
Например:
eugene@Eugene:~$ scp 192.168.0.116:/home/eugene/Documents/client.txt ~/Documents/hello2.txt eugene@192.168.0.116's password: client.txt 100% 1572 78.8KB/s 00:00 eugene@Eugene:~$
Здесь с хоста с адресом 192.168.0.116 копируется файл "/home/eugene/Documents/client.txt" на компьютер-клиент по пути "~/Documents/hello2.txt"
Из других возможностей команды scp надо отметить опцию -r, которая позволяет копировать полную структуру подкаталогов.
Команда sftp также применяется для копирования файлов, но с установкой защищенного FTP-сеанса между компьютерами. sftp в качестве аргумента принимает одну из команд, которые обозначают действие. Основные из них:
put: копирует файл с текущего компьютера на другой.
mput: копирует несколько файлов с текущего компьютера на другой.
get: копирует файл с другого компьютера на текущий.
mget: копирует несколько файлов с другого компьютера на текущий.
Команда sftp предполагает, что между двумя компьютерами уже установлено соединение SSH. Прежде чем устанавливать сеанс FTP с другим компьютером, используйте команду cd на локальном компьютере, чтобы перейти в каталог, в который или из которого надо скопировать файлы. При использовании put, mput, get и mget для передачи файлов этот каталог используется как локальный каталог по умолчанию. Чтобы установить сеанс sftp с компьютером с адресом 192.168.0.116, сначала необходимо использовать следующую команду:
sftp host
В данном случае предполагается, что имя пользователя на клиенте и хосте совпадают. Если имя пользователя на хосте отличается, то оно также указаывается перед символом @:
sftp eugene@host
Например:
eugene@Eugene:~$ sftp 192.168.0.116 eugene@192.168.0.116's password: Connected to 192.168.0.116. sftp>
После этого вы увидите приглашение SFTP и окажетесь в корневом каталоге на удаленном хосте. Здесь вы можете использовать стандартные команды Linux, такие как ls
,
чтобы посмотреть список файлов, или cd
, чтобы перейти в другой каталог:
eugene@Eugene:~$ sftp 192.168.0.116 eugene@192.168.0.116's password: Connected to 192.168.0.116. sftp> ls -l drwxrwxr-x 3 eugene eugene 4096 Feb 18 16:47 Android drwxr-xr-x 2 eugene eugene 4096 Mar 20 13:33 Desktop drwxr-xr-x 2 eugene eugene 4096 Mar 20 13:42 Documents drwxr-xr-x 2 eugene eugene 4096 Mar 20 13:33 Downloads drwxr-xr-x 2 eugene eugene 4096 Mar 20 13:33 Music drwxrwxr-x 3 eugene eugene 4096 Dec 6 2022 Pictures drwxr-xr-x 2 eugene eugene 4096 Mar 20 13:33 Public drwxr-xr-x 2 eugene eugene 4096 Mar 20 13:33 Templates drwxr-xr-x 2 eugene eugene 4096 Mar 20 13:33 Videos drwx------ 8 eugene eugene 4096 Feb 19 22:49 snap sftp>
Также после этого можно будет передать файлы между двумя компьютерами. Например, следующая команда будет использовать sftp для копирования файла "Documents/client.txt" с удаленного хоста в текущий каталог на текущем локальном компьютере-клиенте:
sftp> get Documents/client.txt Fetching /home/eugene/Documents/client.txt to client.txt client.txt 100% 1572 173.4KB/s 00:00 sftp>
Аналогично командой put можно передать файлы с компьютера-клиента на хост:
sftp> cd Documents sftp> pwd Remote working directory: /home/eugene/Documents sftp> put Documents/hello.txt Uploading Documents/hello.txt to /home/eugene/Documents/hello.txt hello.txt 100% 1572 187.5KB/s 00:00 sftp>>
Здесь я сначала перехожу на компьютере-хосте в папку Documents (учитывая, что по умолчанию я нахожусь в домашнем каталоге). В этот каталог будет сохраняться файл, копируемый с моего компьютера. Затем с помощью команды puе
передаю на хост со своего компьютера файл
"Documents/hello.txt". Поскольку когда, я открывал sftp-соединение, я у себя на компьютере находился в своем домашнем каталоге, то команда put будет брать файл относительно этого каталога.
После завершения передачи файлов для окончания сеанса sftp применяется команда quit или exit:
sftp> exit eugene@Eugene:~$