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

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

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式