详解scp和sftp命令

Last Updated: 2023-04-09 08:17:58 Sunday

-- TOC --

scp和sftp命令都来自openSSH工具套件,用于安全地在主机之间拷贝文件。这两个命令底层的安全机制与ssh一样,很安全。

scp命令

scp命令基本格式:

$ scp [options] source target  # options are just after scp command

source和target都可以是remote host,此时虽然是两个remote直接传输(不要使用-3参数),但测试还是发现登陆到某台remote host后执行scp会更快一些!也可以source或target其中之一是remote host!也可以都是local path,此时跟cp命令基本一样。另外,现在新版的scp命令的底层是sftp。

scp命令常用参数

-r,recursive,copy整个目录

-P,指定远端系统端口号(大写P,source前面)

-l,限制带宽,以Kbit/s为单位(-l用于限速,而ssh的-l用于指定登录用户)

-p,拷贝文件的时候,保留源文件的atime,mtime和modes

-q,Quiet mode,执行文件拷贝时,不显示进度,warning或诊断信息

-c,指定数据传输时的加密算法(同ssh)

-C,在数据传输时,开启数据压缩(同ssh)

-i,指定私钥,当远端host不允许使用password登录时(同ssh)

-F,指定一个ssh config文件(同ssh)

scp命令举例

用12345端口和abc用户连接cs.pynote.net,copy路径~/web/htdocs的所有资料到本地路径~/backup/htdocs:

$ scp -P 12345 -r abc@cs.pynote.net:~/web/htdocs ~/backup/htdocs

将本地/home/music/1.mp3 copy到cs.pynote.net服务器,用abc登录,目的路径为/home/abc/other/music文件夹,使用默认22号端口:

$ scp /home/music/1.mp3 abc@cs.pynote.net:/home/abc/others/music

docean和aliyun都在指定的ssh_config配置文件中定义,启用压缩传输:

$ scp -CF ~/repos/mdsite/key/ssh_config docean:draw aliyun:draw

scp命令不支持断点续传,适合copy少量size小的文件,大量size大的文件的同步,建议使用rsyc命令。

sftp命令

sftp,Secure FTP!scp命令的常用参数,sftp都一样!

注意:sftp与ftps是不一样的东西。

sftp基本命令格式:

$ sftp [-P port] username@domain.com

登陆后用help查看指令,既可以操作local host的文件夹,也可以操作remote host的文件并,并提供get和put命令进行下载或上传。

一些ssh client工具,比如著名的MobaXterm,在ssh登陆的同时,自动建立一个sftp连接,并提供一个sftp的文件操作窗口(sftp browser)。(此时有两条TCP连接)

本文链接:https://cs.pynote.net/net/202111233/

-- EOF --

-- MORE --