首页 文章

`scp`与`rsync`有什么不同?

提问于
浏览
174

有关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 命令? scprsync 有什么不同?

7 回答

  • 1

    rysnc可用于在缓慢且不可靠的连接上运行 . 因此,如果您的下载在大文件中间中止,则rysnc将能够在再次调用时从其停止的位置继续 .

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

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

    像往常一样检查 man rsync

  • 2

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

    除安全性外,加密还会对您的传输速度以及CPU开销产生重大影响 . (我的经验是 rsync 可能明显快于 scp . )

    rsync 加密时,请查看此post .

  • 50

    这些工具之间的主要区别在于它们如何复制文件 .

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

    rsync 还可以在本地或通过网络复制文件 . 但它采用了特殊的delta transfer algorithm和一些优化来使操作更快 . 考虑一下电话 .

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

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

    • rsync 会将数据写入临时文件 T ,然后将目标文件 B 替换为 T ,以使更新看起来"atomic"到可能正在使用 B 的进程 .

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

    总之,使用 scp 进行日常任务 . 您在交互式shell上偶尔键入一次的命令 . 它使用起来更简单,在这些情况下 rsync 优化也无济于事 .

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

    此外,在处理大文件时,请使用带有 -P 选项的 rsync . 如果传输中断,您可以通过重新发出命令将其恢复到停止位置 . 见Sid Kshatriya的answer .

  • 2

    差异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

    $ 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 .

    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/

    enter image description here

  • 261

    rsync优于scp的一个主要特性(在delta之外)算法)是它自动 verifies 如果传输的文件已正确传输 . Scp不会这样做,在传输较大的文件时偶尔会导致损坏 . 所以通常rsync是带保证的副本 .

    请参阅 --checksum 选项说明末尾的(centos)联机帮助页注释:

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

  • 0

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

  • 0

    scp 最适合一个文件 .
    OR tar 和压缩的组合,用于较小的数据集,如资源较少的源代码树(即:图像,sqlite等) .


    Yet ,当你开始处理 larger 卷时说:

    • media folders (40 GB)

    • database backups (28 GB)

    • mp3 libraries (100 GB)

    构建一个zip / tar.gz文件以便在此时使用 scp 转移到托管服务器的物理限制变得不切实际 .

    作为练习,你可以做一些体操,如管道 tarssh ,并将结果重定向到一个远程文件 . (节省了构建交换或临时克隆aka zip或tar.gz的需要)

    However

    rsync 简化了此过程,允许您传输数据而不消耗任何额外的磁盘空间 .

    Also

    连续(cron?)更新使用最小的更改与完整克隆的副本相比,可以加速大数据迁移 .

    TL;博士
    scp ==小规模(有空间在同一个驱动器上构建压缩文件)
    rsync ==大规模(需要备份大数据而没有剩余空间)

相关问题