一篇关于设置幽灵博客的文章说使用scp从我的本地机器复制到远程服务器:

scp -r ghost-0.3 root@*your-server-ip*:~/

然而,Railscast 339: Chef Solo Basics使用scp反向复制(从远程服务器复制到本地机器):

scp -r root@178.xxx.xxx.xxx:/var/chef .

在同一个Railscast中,当作者想要将文件复制到远程服务器(与第一个例子的方向相同)时,他使用rsync:

rsync -r . root@178.xxx.xxx.xxx:/var/chef

如果scp会双向复制,为什么还要使用rsync命令呢?scp和rsync有什么不同?


当前回答

对我来说有一个区别,scp总是用ssh(安全shell)加密,而rsync不一定是加密的。更具体地说,rsync本身不执行任何加密;它仍然能够使用其他机制(例如ssh)执行加密。

除了安全性之外,加密对传输速度以及CPU开销也有重要影响。(我的经验是rsync可以比scp快得多。)

查看这篇文章,了解rsync何时启用加密。

其他回答

rsync优于scp的一个主要特性(如果使用w/ ssh,除了delta算法和加密)是它自动验证传输的文件是否已正确传输。Scp不会这样做,这在传输较大文件时偶尔可能导致损坏。所以一般来说rsync是一个有保证的拷贝。

Centos手册在——checksum选项描述的末尾提到:

注意,rsync总是验证每个传输的文件 通过检查整个文件,在接收端正确重建 在文件传输时生成的校验和,但是 转账后自动验证与此无关 选项的before-the-transfer“这个文件需要更新吗?” 检查。

rync对于运行在缓慢且不可靠的连接上非常有用。因此,如果您的下载在一个大文件中途中止,当再次调用时,rysnc将能够从它停止的地方继续。

使用rsync -vP username@host:/path/to/file。

-P选项保留部分下载的文件并显示进度。

像往常一样检查男人rsync

不同参数下的b/w scp和rsync不同

1. 时延性能

SCP: SCP的优化和速度相对较慢 Rsync: Rsync相对来说更优化,速度更快

https://www.disk91.com/2014/technology/networks/compare-performance-of-different-file-transfer-protocol-over-latency/

2. 中断处理

SCP: SCP命令行工具不能从丢失的网络连接恢复中止的下载 rsync:如果上面的rsync会话本身被中断,您可以通过键入相同的命令来恢复它。Rsync将自动重新启动传输。

http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html

3.命令示例

scp

$ scp source_file_path destination_file_path

rsync

$ cd /path/to/directory/of/partially_downloaded_file
$ rsync -P --rsh=ssh userid@remotehost.com:bigdata.tgz ./bigdata.tgz 

-P选项与——partial——progress相同,允许rsync处理部分下载的文件。——rsh=ssh选项告诉rsync使用ssh作为远程shell。

4. 安全:

SCP更安全。您必须使用rsync——rsh=ssh使其与scp一样安全。

Man文档了解更多:

scp: http://www.manpagez.com/man/scp/ rsync: http://www.manpagez.com/man/1/rsync/

最好在实际环境中思考。在我们的团队中,我们使用rsync -aP来替换集群中的坏cassandra主机。我们不能使用scp(缓慢且没有进度的保存)做到这一点。

对我来说有一个区别,scp总是用ssh(安全shell)加密,而rsync不一定是加密的。更具体地说,rsync本身不执行任何加密;它仍然能够使用其他机制(例如ssh)执行加密。

除了安全性之外,加密对传输速度以及CPU开销也有重要影响。(我的经验是rsync可以比scp快得多。)

查看这篇文章,了解rsync何时启用加密。