scp的作用是:从本地系统复制文件到远程系统,反之亦然,或者在两个远程系统之间复制文件。它的工作原理与cp命令相同,但通过网络,并使用ssh进行加密和安全。
目录:
- 简介
- 语法
- 命令
- 摘要
- 参考文献
简介
scp命令对于从远程系统安全地复制文件和目录非常有用。
为了安全起见,它通过SSH
协议工作,因此涉及的两个系统都必须配置SSH。
SSH在两个系统之间提供一个安全的加密隧道。
由于SSH使用认证,所以需要密码等详细信息。
语法
scp [OPTION] [user@]src:]file1 [user@]dest:]file2
- [user@]src:]file1代表源文件。
- [user@]dest:]file2代表目标文件。
- 常用的选项可能包括。
- -r表示递归复制整个目录。
- -C表示启用压缩。
- -l用来限制带宽。
- -o用于传递ssh选项。
- -P指定连接到远程系统上的端口。
- -v打印关于进度的调试信息。
- -q禁用进度表。
- -p用于保留原始文件的修改时间、访问时间和模式。
- -4表示使用IPv4。
- -6用于使用IPv6。
- -c指定一个密码。
命令
要从本地主目录images复制一个文件image.iso到远程机器remote.com*的目录remoteImages,我们要写:
scp ~/image.iso user@remote.com:~/remoteImages
当我们执行这个命令时,系统会提示我们输入remote.com的密码。
我们还可以使用一个ip地址,如下所示:
scp image.iso user@169.173.78.12:~/remoteImages
我们还可以指定在远程系统中复制后的文件名称:
scp image.iso user@remote.com:~/remoteImages/newName.iso
要复制多个文件,我们写:
scp user@remote.com:~/images/*.iso ~/remoteImages
上述命令将本地images目录中所有扩展名为*.iso的文件复制到远程images*目录中。
要递归复制一个目录,我们使用*-r*选项,如下所示:
scp -r images user@remote.com:~/remoteImages
上面的命令递归地复制了images目录及其子目录和文件到远程系统。
我们还可以从远程系统复制一个文件到我们的本地系统,如下所示:
scp user@remote.com:~/remoteImages/remoteImage.iso ~/images
上面的命令将远程文件remoteImage.iso复制到本地目录images。
为了指定一个端口,假设远程系统上的ssh运行在一个不同的端口,我们写道:
scp -P 23 image.iso user@remote.com:~/remoteImages
我们用P选项将默认的ssh端口22改为23,这个端口在远程系统上正在运行。
我们还可以在远程系统之间复制文件,如下:
scp user@remote1.com:~/remote1Images/remote1Image.iso user2@remote2.com~:~/remote2Images
上面的命令从远程主机remote1.com复制remote1Image.iso到另一个远程主机remote2.com的remote2Images目录。
-C选项被用来压缩被复制的文件,因此操作会更快:
scp -C user@remote.com:~/remoteImages/remoteImage.iso ~/images
为了保留文件属性,如修改和访问时间、权限等,我们使用*-p*选项,如下所示:
scp -p user@remote.com:~/remoteImages/remoteImage.iso ~/images
SCP使用AES-128密码进行加密,我们可以使用-c选项来改变,如下所示:
scp -c 3des user@remote.com:~/remoteImages/remoteImage.iso ~/images
从上面的命令中,我们已经切换到了3des加密。
我们还可以用-l选项来限制带宽,如下所示:
scp -l 800 user@remote.com:~/remoteImages/remoteImage.iso ~/images
上面的命令将带宽限制为100kbs。
总结
与cp命令不同,scp在计算机网络上进行复制,
它使用SSH对数据进行加密,并在两个系统之间提供一个安全的隧道,因此文件不能被嗅到。
虽然可以设置RSA认证,但需要密码认证,这将绕过密码提示,同时提高安全性。
当文件被复制并且它们在目标系统上已经存在时,原始文件被替换。
为了能够复制文件,必须有适当的权限。
在windows系统中, WinSCP被用来完成这个任务。 SCP是FTP的一个替代品,而FTP 是不安全的。
参考资料
- 执行命令man scp查看其手册页面或scp-help