Linux文件传输命令SCP与Rsync深度对比:从原理到实战全解析
在日常进行网络传输文件操作时,最常用的两个工具就是 SCP 和 rsync。虽然它们都能通过网络拷贝文件,但使用场景和特性各有特点。接下来本文将简单阐述这两个命令工具的区别和一些使用方法。
本文操作演示环境,两台主机:
1.主机A:Ubuntu 18.04.4 LTS,IP:192.168.0.77,位于上层网络
2.主机B:Ubuntu 22.04.2 LTS,IP:192.168.6.223,位于下层网络
一、协议对比
SCP(Secure Copy): 基于 SSH 协议,相当于 cp + ssh 的结合,使用简单,无需额外配置,传输过程自动加密
rsync(Remote Sync):支持基于 SSH 协议,同时可基于 rsync协议,核心特性是增量同步
二者优缺点对比:
二、常用使用方式
这两种传输都是基于网络的,所以必须网络可达,因此在本文演示命令中,只有下层网络的主机能够在上层网络的主机中上传或下载文件,即目前只有主机B能够访问上层的主机A,反之则不行,因此以下命令均在主机B上操作。
若双方主机在同一网络,则可以互相访问。
1. SCP 用法
基本语法:
# 上传文件到远程主机
scp [参数] 本地文件 用户@远程IP:远程路径
# 从远程主机下载文件
scp [参数] 用户@远程IP:远程路径文件 本地路径
操作示例:
# 上传文件到远程主机
scp ./file.txt g@192.168.0.77:/home/g/
# 从远程主机下载文件
scp g@192.168.0.77:/home/g/file.txt ./
# 传输整个目录(-r 递归)
scp -r ./localdir g@192.168.0.77:/home/g/remotedir
2. rsync 用法(基于SSH)
基本语法:
# 上传文件到远程主机
rsync [参数] 本地文件 用户@远程IP:远程路径
# 从远程主机下载文件
rsync [参数] 用户@远程IP:远程路径 本地路径
常用参数:
-a:归档模式,保留文件属性
-v:显示详细过程
-r:递归拷贝目录
操作示例:
# 上传文件到远程主机(基于SSH)
rsync -av file.txt g@192.168.0.77:/home/g/
# 从远程主机下载文件
rsync -av g@192.168.0.77:/home/g/file.txt ./
# 同步整个目录,并显示进度
rsync -av ./localdir user@192.168.1.10:/home/g/remotedir
三、协议选择
SCP:适合临时、一次性文件传输、不需要额外配置的场景
rsync:适合经常要同步或备份、保持双端数据一致的场景