对于Linux下的海量文件传输,rsync 是远比 scp 更优。

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)上执行"推"的操作更为直观。

详细步骤与命令示例

  1. 确保 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。
  1. 执行 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/

执行后,你会在输出中看到传输的文件列表和最终的总结信息,显示传输了多少数据。

相关推荐
GIS数据转换器22 分钟前
2025无人机在低空物流中的应用实践
大数据·网络·人工智能·安全·无人机
_BugMan37 分钟前
docker实战:基础操作、镜像打包、网络、容器编排
运维·docker·容器
Clownseven1 小时前
2025开发者云服务器评测:AWS, Vercel, Railway该如何选?
运维·服务器·aws
明月看潮生1 小时前
编程与数学 03-009 Linux 操作系统应用 13_Linux 系统安全与用户认证
linux·青少年编程·系统安全·编程与数学
一条懒鱼6661 小时前
Nginx反向代理与缓存功能
运维·nginx
艾莉丝努力练剑1 小时前
【编码表 && STL】C++编程基石:从字符编码表到STL标准库的完整入门指南
java·linux·c++
无小道1 小时前
了解交换机,集线器,中继器,路由器
网络
2501_920047031 小时前
docker-容器网络类型
网络·docker·容器
AscendKing1 小时前
Docker 部署 Ollama 详细教程以及镜像高速下载地址
运维·docker·容器
小白iP代理1 小时前
动态住宅IP vs. 静态数据中心IP:未来趋势与当前选择
网络·网络协议·tcp/ip