一篇关于设置幽灵博客的文章说使用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有什么不同?
不同参数下的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/
SCP最适合于一个文件。
或者对较小的数据集使用tar和压缩的组合
像源代码树的小资源(如:图像,sqlite等)。
然而,当你开始处理更大的容量时,你可以这样说:
媒体文件夹(40gb)
数据库备份(28 GB)
mp3库(100gb)
此时构建一个zip/tar.gz文件来使用scp传输到托管服务器的物理限制是不现实的。
作为练习,您可以做一些练习,比如将tar管道导入ssh并将结果重定向到远程文件中。(节省了建造的需要
交换或临时克隆,即zip或tar.gz)
然而,
Rsync简化了这个过程,允许你传输数据而不消耗任何额外的磁盘空间。
同时,
连续(cron?)更新使用最小的更改,而不是完全克隆副本的速度
随着时间的推移,增加大型数据迁移。
博士tl;
SCP ==小规模(有空间在同一驱动器上构建压缩文件)
Rsync ==大规模(需要备份大量数据,没有剩余空间)