PUB:20141119 10 SCP Commands to Transfer Files or Folders in Linux

@ZTinoZ
This commit is contained in:
wxy 2014-12-25 21:53:41 +08:00
parent e6966181f7
commit b1ffe063d1

View File

@ -1,6 +1,6 @@
Linux的十条SCP传输命令
十个 SCP 传输命令例子
================================================================================
Linux系统管理员应该很熟悉**CLI**环境因为在Linux服务器中是不安装**GUI**的。**SSH**可能是Linux系统管理员通过远程方式安全管理服务器的最流行协议。在**SSH**命令中内置了一种叫**SCP**的命令,用来在服务器之间安全传输文件。
Linux系统管理员应该很熟悉**CLI**环境,因为通常在Linux服务器中是不安装**GUI**的。**SSH**可能是Linux系统管理员通过远程方式安全管理服务器的最流行协议。在**SSH**命令中内置了一种叫**SCP**的命令,用来在服务器之间安全传输文件。
![](http://www.tecmint.com/wp-content/uploads/2013/10/SCP-Commands.png)
@ -10,7 +10,7 @@ Linux系统管理员应该很熟悉**CLI**环境因为在Linux服务器中是
scp source_file_name username@destination_host:destination_folder
**SCP**命令有很多参数供你使用,这里指的是每次都会用到的参数。
**SCP**命令有很多可以使用的参数,这里指的是每次都会用到的参数。
### 用-v参数来提供SCP进程的详细信息 ###
@ -53,7 +53,7 @@ Linux系统管理员应该很熟悉**CLI**环境因为在Linux服务器中是
### 用-C参数来让文件传输更快 ###
有一个参数能让传输文件更快,就是“**-C**”参数,它的作用是不停压缩所传输的文件。它特别之处在于压缩是在网络中进行,当文件传到目标服务器时,它会变回压缩之前的原始大小。
有一个参数能让传输文件更快,就是“**-C**”参数,它的作用是不停压缩所传输的文件。它特别之处在于压缩是在网络传输中进行,当文件传到目标服务器时,它会变回压缩之前的原始大小。
来看看这些命令,我们使用一个**93 Mb**的单一文件来做例子。
@ -121,18 +121,18 @@ Linux系统管理员应该很熟悉**CLI**环境因为在Linux服务器中是
看到了吧,压缩了文件之后,传输过程在**162.5**秒内就完成了,速度是不用“**-C**”参数的10倍。如果你要通过网络拷贝很多份文件那么“**-C**”参数能帮你节省掉很多时间。
有一点我们需要注意,这个压缩的方法不是适用于所有文件。当源文件已经被压缩过了,那就没办法再压缩了。诸如那些像**.zip****.rar****pictures**和**.iso**的文件,用“**-C**”参数就无效
有一点我们需要注意,这个压缩的方法不是适用于所有文件。当源文件已经被压缩过了,那就没办法再压缩很多了。诸如那些像**.zip****.rar****pictures**和**.iso**的文件,用“**-C**”参数就没什么意义
### 选择其它加密算法来加密文件 ###
**SCP**默认是用“**AES-128**”加密算法来加密文件的。如果你想要改用其它加密算法来加密文件,你可以用“**-c**”参数。我们来瞧瞧。
**SCP**默认是用“**AES-128**”加密算法来加密传输的。如果你想要改用其它加密算法来加密传输,你可以用“**-c**”参数。我们来瞧瞧。
pungki@mint ~/Documents $ scp -c 3des Label.pdf mrarianto@202.x.x.x:.
mrarianto@202.x.x.x's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
上述命令是告诉**SCP**用**3des algorithm**来加密文件。要注意这个参数是“**-c**”而不是“**-C**“。
上述命令是告诉**SCP**用**3des algorithm**来加密文件。要注意这个参数是“**-c**”(小写)而不是“**-C**“(大写)
### 限制带宽使用 ###
@ -143,24 +143,24 @@ Linux系统管理员应该很熟悉**CLI**环境因为在Linux服务器中是
mrarianto@202.x.x.x's password:
Label.pdf 100% 3672KB 50.3KB/s 01:13
在“**-l**”参数后面的这个**400**值意思是我们给**SCP**进程限制了带宽为**50 KB/秒**。有一点要记住,带宽是以**千比特/秒** (**kbps**)表示的,**8 比特**等于**1 字节**。
在“**-l**”参数后面的这个**400**值意思是我们给**SCP**进程限制了带宽为**50 KB/秒**。有一点要记住,带宽是以**千比特/秒** (**kbps**)表示的,**8 比特**等于**1 字节**。
因为**SCP**是用**千字节/秒** (**KB/s**)计算的,所以如果你想要限制**SCP**的最大带宽只有**50 KB/s**,你就需要设置成**50 x 8 = 400**。
### 指定端口 ###
通常**SCP**是把**22**作为默认端口。但是为了安全起见,你可以改成其它端口。比如说,我们想用**2249**端口,命令如下所示。
通常**SCP**是把**22**作为默认端口。但是为了安全起见SSH 监听端口改成其它端口。比如说,我们想用**2249**端口,这种情况下就要指定端口。命令如下所示。
pungki@mint ~/Documents $ scp -P 2249 Label.pdf mrarianto@202.x.x.x:.
mrarianto@202.x.x.x's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14
确认一下写的是大写字母“**P**”而不是“**p**“,因为“**p**”已经被用来保留源文件的修改时间和模式。
确认一下写的是大写字母“**P**”而不是“**p**“,因为“**p**”已经被用来保留源文件的修改时间和模式LCTT 译注:和 ssh 命令不同了)
### 递归拷贝文件和文件夹 ###
有时我们需要拷贝文件夹及其内部的所有**文件** / **文件夹**,我们如果能用一条命令解决问题那就更好了。**SCP**用“**-r**”参数就能做到。
有时我们需要拷贝文件夹及其内部的所有**文件**/**文件夹**,我们如果能用一条命令解决问题那就更好了。**SCP**用“**-r**”参数就能做到。
pungki@mint ~/Documents $ scp -r documents mrarianto@202.x.x.x:.
@ -172,7 +172,7 @@ Linux系统管理员应该很熟悉**CLI**环境因为在Linux服务器中是
### 禁用进度条和警告/诊断信息 ###
如果你不想从SCP中看到进度条和警告/诊断信息,你可以用“**-q**”参数来禁用它们,举例如下。
如果你不想从SCP中看到进度条和警告/诊断信息,你可以用“**-q**”参数来静默它们,举例如下。
pungki@mint ~/Documents $ scp -q Label.pdf mrarianto@202.x.x.x:.
@ -207,7 +207,7 @@ Linux系统管理员应该很熟悉**CLI**环境因为在Linux服务器中是
### 选择不同的ssh_config文件 ###
对于经常在公司网络和公共网络之间切换的移动用户来说一直改变SCP的设置显然是很痛苦的。如果我们能放一个不同的**ssh_config**文件来匹配我们的需求那就很好了。
对于经常在公司网络和公共网络之间切换的移动用户来说一直改变SCP的设置显然是很痛苦的。如果我们能放一个保存不同配置的**ssh_config**文件来匹配我们的需求那就很好了。
#### 以下是一个简单的场景 ####
@ -231,7 +231,7 @@ via: http://www.tecmint.com/scp-commands-examples/
作者:[Pungki Arianto][a]
译者:[ZTinoZ](https://github.com/ZTinoZ)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出