有关setting up Ghost blogging的文章说使用 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
有什么不同?
7 回答
rysnc可用于在缓慢且不可靠的连接上运行 . 因此,如果您的下载在大文件中间中止,则rysnc将能够在再次调用时从其停止的位置继续 .
使用
rsync -vP username@host:/path/to/file .
-P选项保留部分下载的文件,并显示进度 .
像往常一样检查
man rsync
我有一个区别是
scp
总是用ssh(安全shell)加密,而rsync
不一定是加密的 . 更具体地说,rsync
仍然能够使用其他机制(例如ssh)来执行加密 .除安全性外,加密还会对您的传输速度以及CPU开销产生重大影响 . (我的经验是
rsync
可能明显快于scp
. )当
rsync
加密时,请查看此post .这些工具之间的主要区别在于它们如何复制文件 .
scp
基本上读取源文件并将其写入目标 . 它在本地或通过网络执行简单的线性复制 .rsync
还可以在本地或通过网络复制文件 . 但它采用了特殊的delta transfer algorithm和一些优化来使操作更快 . 考虑一下电话 .rsync
将检查 A 和 B 的文件大小和修改时间戳,如果匹配则跳过任何进一步处理 .如果目标文件 B 已存在,则增量传输算法将确保仅通过线路发送 A 和 B 之间的差异 .
rsync
会将数据写入临时文件 T ,然后将目标文件 B 替换为 T ,以使更新看起来"atomic"到可能正在使用 B 的进程 .他们之间的另一个区别涉及调用 .
rsync
有很多命令行选项,允许用户微调其行为 . 它支持复杂的过滤规则,以批处理模式,守护进程模式等运行.scp
只有几个开关 .总之,使用
scp
进行日常任务 . 您在交互式shell上偶尔键入一次的命令 . 它使用起来更简单,在这些情况下rsync
优化也无济于事 .对于重复性任务,例如
cron
作业,请使用rsync
. 如上所述,在多次调用时,它将利用已传输的数据,执行速度非常快并节省资源 . 它是一个很好的工具,可以通过网络保持两个目录同步 .此外,在处理大文件时,请使用带有
-P
选项的rsync
. 如果传输中断,您可以通过重新发出命令将其恢复到停止位置 . 见Sid Kshatriya的answer .差异b / w scp和rsync对不同参数的影响
1. Performance over latency
scp:scp的优化和速度相对较低
rsync:rsync相对更优化和速度
https://www.disk91.com/2014/technology/networks/compare-performance-of-different-file-transfer-protocol-over-latency/
2. Interruption handling :
scp:scp命令行工具无法从丢失的网络连接中恢复中止的下载
rsync:如果上述rsync会话本身被中断,您可以通过键入相同的命令将其恢复到所需的时间 . rsync将自动重新启动它停止的传输 .
http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html
3. Command Example
$ scp source_file_path destination_file_path
$ 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 .
SCP:
4. Security :
scp更安全,但是当使用rsync --rsh = ssh时,rsync就会安全
man document to know more :
scp:http://www.manpagez.com/man/1/scp/
rsync:http://www.manpagez.com/man/1/rsync/
rsync优于scp的一个主要特性(在delta之外)算法)是它自动 verifies 如果传输的文件已正确传输 . Scp不会这样做,在传输较大的文件时偶尔会导致损坏 . 所以通常rsync是带保证的副本 .
请参阅
--checksum
选项说明末尾的(centos)联机帮助页注释:在实际环境中思考会更好 . 在我们的团队中,我们使用
rsync -aP
来替换群集中的错误cassandra主机 . 我们不能用scp(缓慢且没有进展保存)来做到这一点 .scp 最适合一个文件 .
OR
tar
和压缩的组合,用于较小的数据集,如资源较少的源代码树(即:图像,sqlite等) .Yet ,当你开始处理 larger 卷时说:
media folders (40 GB)
database backups (28 GB)
mp3 libraries (100 GB)
构建一个zip / tar.gz文件以便在此时使用 scp 转移到托管服务器的物理限制变得不切实际 .
作为练习,你可以做一些体操,如管道
tar
到ssh
,并将结果重定向到一个远程文件 . (节省了构建交换或临时克隆aka zip或tar.gz的需要)However ,
rsync 简化了此过程,允许您传输数据而不消耗任何额外的磁盘空间 .
Also ,
连续(cron?)更新使用最小的更改与完整克隆的副本相比,可以加速大数据迁移 .
TL;博士
scp
==小规模(有空间在同一个驱动器上构建压缩文件)rsync
==大规模(需要备份大数据而没有剩余空间)