引言
我们平时总会有在不同的设备之间传输文件的需要,好友同事间可以用微信、QQ、网盘等,还是比较方便安全的。而在linux的操作系统中,我们经常需要两台机器之间拷贝文件,或者由于业务需要备份文件,那就不得不用到scp和rsync两个命令,那么什么时候用scp、rsync呐?他俩之间有什么区别呐?
scp
scp命令
scp,安全复制,该命令可以在两个位置之间安全地复制文件和目录。
使用 scp,可以复制文件:
- 从本地系统到远程系统。
- 从远程系统到本地系统。
使用 scp 传输数据时,文件是加密的,因此任何敏感内容都不会在传输过程中被篡改。
语法
scp 命令语法如下所示:
其中 OPTION 是scp 选项,例如:
- -P :指定远程主机 ssh 端口。(P大写)
- -p :保留文件修改和访问时间。(p小写)
- -q :抑制进度表和非错误消息的选项。
- -C :在数据发送到目标机器时压缩数据的选项。(C大写)
- -r :递归复制目录的选项。
- -v :详细模式,打印有关其进度的调试消息的选项,这有助于调试连接、身份验证和配置问题。(v小写)
rsync
rsync 命令
rsync 也是一个比较实用的命令,用于通过远程 shell 在两个位置之间同步文件,它通传输源和目标之间的差异来提供更快的文件传输。
rsync 可用于增量备份、在系统之间复制文件,可以替代 scp 、 sftp 和 cp 命令。
语法
-r : 递归传输目录下所有文件
-a : 归档模式,保持所有文件属性
-z : 传输进行压缩处理
–exclude=PATTERN 指定排除不需要传输的文件模式
–exclude-from=FILE 排除FILE中指定模式的文件
–bwlimit :限制I/O带宽 KB/S
区别
- scp 通过安全的 SSH 连接将文件从本地机器复制到远程机器,而 rsync 允许您同步远程文件夹。
- scp 读取源文件并将其写入目标,是在本地或通过网络执行线性复制。rsync 也是在本地或通过网络复制文件,但它使用特殊的增量传输算法和一些优化来使操作更快。
- scp 总是安全的,而 rsync 必须通过 SSH 传输才能安全。
- 如果要传输大文件,并且传输在完成之前断开连接,rsync 会从中断的地方继续传输,而 scp 没有。
- rsync 比较每一端的文件并只传输更改文件的更改部分,当你第一次传输文件时,它的行为与 scp 非常相似,但是对于大多数文件未更改的第二次传输,它推送的数据将比 scp 少得多。这也是一种重新启动失败传输的便捷方法,你只需重新发出相同的命令,它就会从上次中断的地方开始,而scp将从头开始。
总之,用scp比较多,因为它使用起来更简单。
对于重复性任务,如 cron 作业,请使用 rsync。如前所述,在多次调用时,它将利用已传输的数据,执行速度非常快并节省资源,它是在网络上保持两个目录同步的绝佳工具。
此外,在处理大文件时,请使用带有 -P 选项的 rsync。如果传输被中断,您可以通过重新发出命令从它停止的地方恢复它。