scp 命令的基本语法
下面的命令将读作copy source_file_name进入destination_folder在destination_host使用username account。
>scpsource_file_nameusername@destination_host:destination_folder
里面有很多参数scp你可以使用的命令。以下是可能在日常使用中使用的参数。
使用-v参数提供 scp 进程的详细信息
基础的scp不带参数的命令将在后台复制文件。除非该过程完成或出现某些错误,否则用户将看不到任何内容。
你可以使用-v参数将调试信息打印到屏幕中。它可以帮助你调试连接、身份验证和配置问题。
rumenz@local$scp-vLabel.pdfrumenz@192.168.1.110:.
输出
复制文件时 scp 显示进度
Executing:program/usr/bin/sshhost202.x.x.x,usermrarianto,commandscp-v-t. OpenSSH_6.0p1Debian-3,OpenSSL1.0.1c10May2012 debug1:Readingconfigurationdata/etc/ssh/ssh_config debug1:/etc/ssh/ssh_configline19:Applyingoptionsfor* debug1:Connectingto202.x.x.x[202.x.x.x]port22. debug1:Connectionestablished. debug1:Host'202.x.x.x'isknownandmatchestheRSAhostkey. debug1:Foundkeyin/home/pungki/.ssh/known_hosts:1 debug1:ssh_rsa_verify:signaturecorrect debug1:Nextauthenticationmethod:password rumenz@202.x.x.x'spassword: debug1:Authenticationsucceeded(password). Authenticatedto202.x.x.x([202.x.x.x]:22). Sendingfilemodes:C07703760348Label.pdf Sink:C07703760348Label.pdf Label.pdf100%3672KB136.0KB/s00:27 Transferred:sent3766304,received3000bytes,in65.2seconds Bytespersecond:sent57766.4,received46.0 debug1:Exitstatus0
提供原始文件的修改时间、访问时间和模式
-p参数将帮助你解决这个问题。估计时间和连接速度将出现在屏幕上。
rumenz@local$scp-pLabel.pdfrumenz@192.168.1.110:.
输出
scp 估计复制大文件所需的时间
>rumenz@202.x.x.x'spassword: Label.pdf100%3672KB126.6KB/s00:29
使用 -C 参数加快文件传输速度
可以加快文件传输速度的参数之一是-C范围。这-C参数将随时随地压缩你的文件,独特的是压缩只发生在网络中。当文件到达目标服务器时,它将恢复到压缩前的原始大小。
>rumenz@local$scp-pvmessages.logrumenz@192.168.1.110:.
输出
scp 在不压缩的情况下传输文件
Executing:program/usr/bin/sshhost202.x.x.x,usermrarianto,commandscp-v-p-t. OpenSSH_6.0p1Debian-3,OpenSSL1.0.1c10May2012 debug1:Readingconfigurationdata/etc/ssh/ssh_config debug1:/etc/ssh/ssh_configline19:Applyingoptionsfor* debug1:Connectingto202.x.x.x[202.x.x.x]port22. debug1:Connectionestablished. debug1:identityfile/home/pungki/.ssh/id_rsatype-1 debug1:Foundkeyin/home/pungki/.ssh/known_hosts:1 debug1:ssh_rsa_verify:signaturecorrect debug1:Tryingprivatekey:/home/pungki/.ssh/id_rsa debug1:Nextauthenticationmethod:password rumenz@202.x.x.x'spassword: debug1:Authenticationsucceeded(password). Authenticatedto202.x.x.x([202.x.x.x]:22). debug1:Sendingcommand:scp-v-p-t. Filemtime1323853868atime1380425711 Sendingfiletimestamps:T1323853868013804257110 messages.log100%93MB58.6KB/s27:05 Transferred:sent97614832,received25976bytes,in1661.3seconds Bytespersecond:sent58758.4,received15.6 debug1:Exitstatus0
-C允许压缩
rumenz@local$scp-Cpvmessages.logrumenz@192.168.1.110:.
输出
scp 使用压缩更快地传输文件
Executing:program/usr/bin/sshhost202.x.x.x,usermrarianto,commandscp-v-p-t. OpenSSH_6.0p1Debian-3,OpenSSL1.0.1c10May2012 debug1:Readingconfigurationdata/etc/ssh/ssh_config debug1:/etc/ssh/ssh_configline19:Applyingoptionsfor* debug1:Connectingto202.x.x.x[202.x.x.x]port22. debug1:Connectionestablished. debug1:identityfile/home/pungki/.ssh/id_rsatype-1 debug1:Host'202.x.x.x'isknownandmatchestheRSAhostkey. debug1:Foundkeyin/home/pungki/.ssh/known_hosts:1 debug1:ssh_rsa_verify:signaturecorrect debug1:Nextauthenticationmethod:publickey debug1:Tryingprivatekey:/home/pungki/.ssh/id_rsa debug1:Nextauthenticationmethod:password rumenz@202.x.x.x'spassword: debug1:Enablingcompressionatlevel6. debug1:Authenticationsucceeded(password). Authenticatedto202.x.x.x([202.x.x.x]:22). debug1:channel0:new[client-session] debug1:Sendingcommand:scp-v-p-t. Filemtime1323853868atime1380428748 Sendingfiletimestamps:T1323853868013804287480 Sink:T1323853868013804287480 Sendingfilemodes:C060097517300messages.log messages.log100%93MB602.7KB/s02:38 Transferred:sent8905840,received15768bytes,in162.5seconds Bytespersecond:sent54813.9,received97.0 debug1:Exitstatus0 debug1:compressoutgoing:rawdata97571111,compressed8806191,factor0.09 debug1:compressincoming:rawdata7885,compressed3821,factor0.48
如果你要通过网络复制大量文件,-C参数将帮助你减少所需的总时间。
压缩方法不适用于所有文件。当源文件已经被压缩时,就没有什么效果了。文件如.zip,.rar,pictures, 和.iso
更改 scp 密码以加密文件
默认情况下scp使用AES-128来加密文件。如果你想更改为其他密码对其进行加密,你可以使用-c范围。看看这个命令。
rumenz@local$scp-c3desLabel.pdfrumenz@192.168.1.110:. rumenz@202.x.x.x'spassword: Label.pdf100%3672KB282.5KB/s00:13
上面的命令告诉scp使用3des algorithm来加密文件。请注意此参数使用-c不是-C。
使用 scp 命令限制带宽使用
另一个可能有用的参数是-l范围。这-l参数将限制使用的带宽制 。如果你执行自动化脚本来复制大量文件,这将很有用
rumenz@local$scp-l400Label.pdfrumenz@192.168.1.110:. rumenz@202.x.x.x'spassword: Label.pdf100%3672KB50.3KB/s01:13
scp 默认带宽的单位是Kilobyte/sec(KB/s)。所以如果你想限制你的带宽scp最多只有50 KB/s,你需要将其设置为50 x 8=400.
指定要与 scp 一起使用的特定端口
scp正在使用端口22作为默认端口。但出于安全原因,你可以将端口更改为另一个端口. 例如,我们使用端口2249.
rumenz@local$scp-P2249Label.pdfrumenz@192.168.1.110:. rumenz@202.x.x.x'spassword: Label.pdf100%3672KB262.3KB/s00:14
递归复制目录中的文件
有时我们需要复制目录和其中的所有文件,目录。
rumenz@local$scp-rdocumentsrumenz@192.168.1.110:. rumenz@202.x.x.x'spassword: Label.pdf100%3672KB282.5KB/s00:13 scp.txt100%10KB9.8KB/s00:00
复> 制过程完成后,你将在目标服务器上找到一个名为documents及其所有文件。文件夹documents是自动创建的。
禁用进度表和警告 / 诊断消息
rumenz@local$scp-qLabel.pdfrumenz@192.168.1.110:. rumenz@202.x.x.x'spassword: rumenz@local$
可以看到,输入密码后,没有关于 scp 进程的信息。该过程完成后,你将再次看到提示。
通过代理使用 scp 复制文件
代理服务器通常用于办公环境。scp 本身没有配置代理。当你的环境使用代理时,你必须告诉scp 与代理进行通信。
例如代理地址是10.0.96.6代理端口是8080.代理还实现了用户身份验证。首先,你需要创建~/.ssh/config文件
ProxyCommand/usr/bin/corkscrew10.0.96.68080%h%p~/.ssh/proxyauth
然后你需要创建文件~/.ssh/proxyauth里面输入。
myusername:mypassword
前提是需要安装corkscrew
$apt-getinstallcorkscrew
Centos系统可以用yum安装corkscrew
#yuminstallcorkscrew
由于~/.ssh/proxyauth文件包含你的username和password以明文格式,请确保该文件只能自己访问。
选择不同的ssh_config 文件
对于经常在公司网络和公共网络之间切换的移动用户来说,总是在scp中更改设置会很痛苦。
场景示例
代理在公司网络中使用,但不在公共网络中使用,并且你定期切换网络。
rumenz@local$scp-F/home/pungki/proxy_ssh_configLabel.pdf rumenz@192.168.1.110:. rumenz@202.x.x.x'spassword: Label.pdf100%3672KB282.5KB/s00:13
默认情况下ssh_config每个用户的文件将被放置在~/.ssh/config。创建一个特定的ssh_config具有代理兼容性的文件将更容易在网络之间切换。
当你在公司网络,你可以使用-F范围。当你在公共网络上时,你可以不用-F参数。
-
Linux
+关注
关注
87文章
11312浏览量
209702 -
参数
+关注
关注
11文章
1838浏览量
32261 -
文件
+关注
关注
1文章
567浏览量
24762 -
命令
+关注
关注
5文章
685浏览量
22043 -
SCP
+关注
关注
0文章
29浏览量
9264
原文标题:在 Linux 中传输文件文件夹的 10个 scp 命令
文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论