
rpm下载地址:https://pkgs.org/download/rsync
源地址:https://almalinux.pkgs.org/8/almalinux-baseos-aarch64/rsync-3.1.3-23.el8_10.aarch64.rpm.html
源地址https://almalinux.pkgs.org/8/almalinux-baseos-x86_64/rsync-3.1.3-23.el8_10.x86_64.rpm.html
x86安装包:https://repo.almalinux.org/almalinux/8/BaseOS/x86_64/os/Packages/rsync-3.1.3-23.el8_10.x86_64.rpm
aarch64安装包:https://repo.almalinux.org/almalinux/8/BaseOS/aarch64/os/Packages/rsync-3.1.3-23.el8_10.aarch64.rpm
RSync vs SCP:核心对比
特性 | RSync | SCP (基于 SSH) | 优势方 |
---|---|---|---|
传输机制 | 增量传输。只传输源和目标之间差异的部分。 | 完整拷贝。无论目标是否存在文件,都会从头开始传输所有内容。 | RSync |
效率 | 极高(尤其在后续同步或中断续传时)。首次同步可能稍慢于 SCP(需要计算校验和)。 | 较低。每次传输都会复制所有数据,海量文件时网络带宽浪费严重。 | RSync |
中断恢复 | 支持 (--partial 或 --partial --progress )。-P 参数可保留部分传输的文件并从中断处继续。 |
不支持。连接中断后必须重新开始传输所有文件。 | RSync |
速度优化 | 可以使用 -z 参数进行压缩传输,节省带宽。可以通过 --bwlimit 限制带宽占用。 |
压缩需要手动配置 SSH 参数 (-o Compression=yes ),功能单一。 |
RSync |
功能多样性 | 极其丰富。可以镜像同步 (-a --delete )、排除文件 (--exclude )、保持权限属性 (-a )、干跑测试 (-n )、删除目标端多余文件等。 |
非常单一。功能就是复制,无法进行复杂的同步操作。 | RSync |
资源消耗 | CPU 占用较高。因为需要计算校验和来对比文件差异(压缩也会占 CPU)。 | CPU 占用较低。加密是主要开销,但几乎不进行文件计算。 | SCP |
安全性 | 默认使用 SSH 协议加密通道,与 SCP 同样安全。 | 基于 SSH 协议,安全性有保障。 | 平手 |
rsync 如何使用把172.16.17.110的/data/file 复制到172.16.17.131:/data/
使用 rsync 将文件从一台服务器复制到另一台服务器是一个非常常见的任务。以下是详细的操作步骤和命令。
bash
rsync [选项] 源路径 目标路径
对于你的需求(从 172.16.17.110 的 /data/file 复制到 172.16.17.131 的 /data/),命令结构如下:
在 172.16.17.110 上执行:推(Push)模式
bash
rsync [选项] /data/file 用户名@172.16.17.131:/data/
(从110执行,将本地文件推送到131)
bash
或者在 172.16.17.131 上执行:拉(Pull)模式
bash
rsync [选项] 用户名@172.16.17.110:/data/file /data/
(从131执行,从110拉取文件到本地)
通常,在源服务器(110)上执行"推"的操作更为直观。
详细步骤与命令示例
- 确保 SSH 免密登录(强烈推荐)
为了避免每次传输都输入密码,最好先设置 SSH 密钥认证。
在 172.16.17.110 上操作:
1. 生成密钥对(如果已有则跳过)
bash
ssh-keygen -t rsa
2. 将公钥拷贝到目标服务器 172.16.17.131
bash
ssh-copy-id username@172.16.17.131
系统会提示你输入一次 131 服务器上对应用户的密码
bash
将 username 替换为 172.16.17.131 上的真实用户名,如 root。
- 执行 Rsync 命令
以下是一些常用的命令示例,请根据你的需求选择。
示例 1:基础复制(可能会提示输入密码)
在 110 上执行
bash
rsync -av /data/file root@172.16.17.131:/data/
-a: 归档模式(保持文件属性、递归复制等)
-v: 显示详细过程
系统会提示你输入 root 用户在 131 服务器上的密码。
示例 2:启用压缩和进度条(适用于大文件或慢网络)
在 110 上执行
bash
rsync -avzP /data/file root@172.16.17.131:/data/
-z: 在传输过程中进行压缩,节省带宽
-P: 等价于 --partial --progress,显示传输进度并支持断点续传
示例 3:复制整个目录的内容(注意目录后的 /)
如果你的 /data/file 是一个目录,并且你想同步该目录下的所有内容到 131 的 /data/ 目录中,请在源路径后加一个 /。
同步 /data/file/ 目录下的所有文件和子目录
bash
rsync -avzP /data/file/ root@172.16.17.131:/data/
如果你想同步目录本身(在 /data/ 下创建一个 file 目录),则不要加 /:
同步 /data/file 这个目录本身
bash
rsync -avzP /data/file root@172.16.17.131:/data/
结果:172.16.17.131:/data/file/...
示例 4:干跑测试(Dry Run)
在正式执行前,可以先测试一下命令会做什么而不实际传输数据,这是一个非常良好的习惯。
bash
rsync -avzPn /data/file/ root@172.16.17.131:/data/
-n: --dry-run 的缩写,干跑模式。
重要注意事项
防火墙:确保 172.16.17.131 服务器的 SSH 端口(默认为 22) 对 172.16.17.110 开放。
路径权限:确保 131 服务器上的 root 用户(或你使用的其他用户)有权限写入 /data/ 目录。
源路径含义:
rsync /data/file/ ...:传输 file 目录下的所有内容。
rsync /data/file ...:传输 file 目录本身。
如果 SSH 端口不是 22,需要使用 -e 选项指定:
bash
rsync -avzP -e "ssh -p 2222" /data/file/ root@172.16.17.131:/data/
最终推荐命令
假设已设置 SSH 免密登录,并且要同步目录内容,最可靠的命令是:
在 172.16.17.110 上执行:
bash
rsync -avzP /data/file/ root@172.16.17.131:/data/
执行后,你会在输出中看到传输的文件列表和最终的总结信息,显示传输了多少数据。
