小编典典

`scp` 与 `rsync` 有何不同?

all

一篇关于设置 Ghost 博客的文章说使用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

为什么要使用rsync命令 ifscp将双向复制?与有何scp不同?rsync


阅读 91

收藏
2022-04-15

共1个答案

小编典典

这些工具之间的主要区别在于它们复制文件的方式。

scp基本上读取源文件并将其写入目标。它在本地或通过网络执行纯线性复制。

rsync还可以在本地或通过网络复制文件。但它采用了一种特殊的增量传输算法和一些优化来使操作更快。考虑电话。

rsync A host:B
  • rsync 将检查AB 的文件大小和修改时间戳,如果它们匹配则跳过任何进一步的处理。

  • 如果目标文件 B 已经存在,则增量传输算法将确保仅通过线路发送 AB之间的差异。

  • rsync会将数据写入临时文件 T ,然后将目标文件 B 替换为 T以使更新对于可能正在使用 B 的进程看起来是“原子的” 。

它们之间的另一个区别涉及调用。rsync有大量的命令行选项,允许用户微调其行为。它支持复杂的过滤规则,以批处理模式、守护模式等运行,scp只有几个开关。

总之,scp用于您的日常任务。您偶尔在交互式 shell 上键入的命令。它使用起来更简单,在这些情况下rsync优化不会有太大帮助。

对于重复性任务,例如cron作业,请使用rsync.
如前所述,在多次调用时,它将利用已传输的数据,非常快速地执行并节省资源。它是通过网络保持两个目录同步的绝佳工具。

此外,在处理大文件时,请使用rsync-P选项。如果传输中断,您可以通过重新发出命令从停止的位置恢复传输。见席德·刹帝利的回答

最后,请注意rsync://该协议类似于纯 HTTP:未加密且没有完整性检查。确保始终rsync通过 SSH 使用(如上面问题中的示例),而不是通过
rsync 协议,除非您真的知道自己在做什么。scp将始终使用 SSH 作为具有完整性和机密性保证的底层传输机制,因此这是两个实用程序之间的另一个区别。

2022-04-15