对于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/

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

相关推荐
Ronin3055 小时前
【Linux系统】线程互斥
linux·服务器·vscode·互斥量·线程互斥
人工智能训练师5 小时前
部署在windows的docker中的dify知识库存储位置
linux·运维·人工智能·windows·docker·容器
我命由我123456 小时前
Photoshop - Ps 标尺
运维·ui·工具·设计·photoshop·ps·美工
m0_661316236 小时前
libmodbus移植
网络
徐子元竟然被占了!!7 小时前
上层协议依赖TCP
网络·网络协议·tcp/ip
xiezhr7 小时前
一个真·免费、真·开源的远程桌面神器——RustDesk
运维·rust·远程办公·远程
Bruce_Liuxiaowei7 小时前
网络端口与服务对应表 - 白帽子安全参考指南
网络·windows·安全·web安全·ctf