linux文件传输指令rsync详细介绍

rsync 是一个非常强大的文件同步工具,广泛应用于 Linux/Unix 系统中。它不仅支持本地文件的同步,还可以通过网络进行远程文件传输。与传统的 scp 工具相比,rsync 的优势在于它的增量传输功能:只有发生变化的部分会被传输,从而大幅减少带宽和时间消耗。


rsync 基本语法

rsync [选项] 源路径 目标路径
  • 源路径:可以是本地文件或目录,也可以是远程服务器上的文件或目录。
  • 目标路径:同理,可以是本地或远程路径。
  • 常用选项
    • -a:归档模式,保留文件权限、时间戳、符号链接等属性。
    • -v:详细输出,显示传输过程中的信息。
    • -z:压缩数据传输(适用于大文件或低带宽环境)。
    • --delete:删除目标路径中源路径不存在的文件(实现镜像同步)。
    • --exclude:排除特定的文件或目录。
    • --progress:显示传输进度。
    • -r:递归复制目录。
    • -u:仅更新目标文件中比源文件旧的文件。
    • --dry-run:模拟运行,不实际执行操作(用于测试命令是否正确)。

常见场景与实操案例

场景 1:本地文件夹同步

你有两个本地文件夹,希望将一个文件夹的内容同步到另一个文件夹。

需求:将 /home/user/source_dir 同步到 /home/user/backup_dir

命令

rsync -av /home/user/source_dir/ /home/user/backup_dir/

解释

  • -a:归档模式,保留文件属性。
  • -v:显示详细信息。
  • 注意末尾的斜杠 /,表示同步的是 source_dir 内部的内容,而不是整个目录本身。

结果

  • 如果 backup_dir 中有 source_dir 中没有的文件,它们不会被删除。
  • 如果需要删除多余文件,可以加上 --delete 选项:
    rsync -av --delete /home/user/source_dir/ /home/user/backup_dir/
    

场景 2:远程备份

你希望将本地文件夹同步到远程服务器上的某个目录。

需求:将本地的 /home/user/data 文件夹同步到远程服务器的 /home/remote_user/backup

前提:已配置好 SSH 免密登录,或者提供密码认证。

命令

rsync -avz /home/user/data/ remote_user@remote_server:/home/remote_user/backup/

解释

  • -z:启用压缩,适合大文件或低带宽环境。
  • remote_user@remote_server:指定远程服务器的用户名和地址。
  • /home/remote_user/backup/:远程服务器的目标路径。

结果

  • 只有新增或修改的文件会被传输到远程服务器。
  • 如果需要排除某些文件(如日志文件),可以使用 --exclude
    rsync -avz --exclude "*.log" /home/user/data/ remote_user@remote_server:/home/remote_user/backup/
    

场景 3:从远程服务器下载文件

你希望从远程服务器下载文件到本地。

需求:将远程服务器的 /var/www/html 文件夹同步到本地的 /home/user/local_backup

命令

rsync -avz remote_user@remote_server:/var/www/html/ /home/user/local_backup/

解释

  • 数据流向是从远程服务器到本地。
  • 其他选项保持一致。

场景 4:增量同步并保留历史版本

你希望在同步时保留目标路径的历史版本。

需求:将 /home/user/projects 同步到 /mnt/backup/projects,但每次同步时创建一个新的时间戳目录以保存历史版本。

命令

TIMESTAMP=$(date +"%Y%m%d%H%M%S")
rsync -av /home/user/projects/ /mnt/backup/projects/$TIMESTAMP/

解释

  • 使用 $(date ...) 生成当前时间戳,作为子目录名称。
  • 每次同步都会创建一个新的目录,保留历史版本。

场景 5:跨数据中心的大规模数据同步

假设你有一个大型分布式系统,需要定期将数据中心 A 的数据同步到数据中心 B。

需求:将数据中心 A 的 /data/files 同步到数据中心 B 的 /data/backup

命令

rsync -avz --progress --partial --bwlimit=5000 /data/files/ user@datacenterB:/data/backup/

解释

  • --progress:显示传输进度。
  • --partial:允许断点续传,防止因网络中断导致传输失败。
  • --bwlimit=5000:限制传输带宽为 5000 KB/s,避免占用过多网络资源。

场景 6:只同步特定类型的文件

你希望只同步某些特定类型的文件,例如 .txt.csv

需求:将 /home/user/documents 中的所有 .txt.csv 文件同步到 /mnt/backup/docs

命令

rsync -avz --include="*.txt" --include="*.csv" --exclude="*" /home/user/documents/ /mnt/backup/docs/

解释

  • --include:指定要包含的文件类型。
  • --exclude="*":排除所有其他文件。

场景 7:删除目标路径中多余的文件

你希望确保目标路径的内容与源路径完全一致,包括删除目标路径中多余的文件。

需求:将 /home/user/source 同步到 /home/user/target,并删除目标路径中多余的文件。

命令

rsync -av --delete /home/user/source/ /home/user/target/

解释

  • --delete:删除目标路径中源路径不存在的文件。

总结

rsync 是一个功能强大且灵活的工具,适用于多种文件同步场景。以下是一些关键点:

  1. 增量传输:只传输变化的部分,节省时间和带宽。
  2. 灵活性:支持本地和远程同步,适合各种环境。
  3. 安全性:可以通过 SSH 加密传输,保护敏感数据。
  4. 高级功能:支持断点续传、带宽限制、文件过滤等。
### Linux 局域网文件传输命令 #### SCP (Secure Copy) SCP 是一种基于 SSH 协议的安全远程文件拷贝命令[^1]。此命令允许用户在不同服务器之间安全地复制文件或整个目录结构。为了执行这一操作,SCP 使用 SSH 加密通道来保护数据传输过程中的安全性。 对于单个文件的传输可以使用如下命令: ```bash scp /path/to/local/file username@remotehost:/path/to/destination/ ``` 当涉及到多个文件或是整个目录时,则需加上 `-r` 参数以递归方式处理这些项目: ```bash scp -r /path/to/directory username@remotehost:/path/to/destination/ ``` #### Rsync (Remote Sync) Rsync 是一款高效的远程同步工具,它不仅支持通过网络进行文件传输,而且具备增量备份的能力,即仅传输源端与目标端之间的差异部分而非整份副本[^3]。这使得 rsync 成为大容量数据集更新的理想选择之一。此外,rsync 支持压缩选项 (`-z`) 和删除多余文件的功能 (`--delete`) 来保持两端的一致性。 基本语法如下所示: ```bash rsync -avz /source/path/ user@target:/destination/path/ ``` 这里 `a` 表示存档模式(保留权限、时间戳等),而 `v` 则提供详细的输出信息以便于监控进度。 #### 实际应用案例 假设有一台名为 serverA 的机器想要向另一台位于同一局域网内的 serverB 发送一个名为 project.tar.gz 的 tarball 文件,在这种情况下可采用以下任一方法完成任务: 利用 SCP 完成一次性完整的文件转移: ```bash scp ~/project.tar.gz admin@serverB.local:/backup/projects/ ``` 或者借助 Rsync 实现更高效的数据同步并节省带宽资源消耗: ```bash rsync -avz --progress ~/project.tar.gz admin@serverB.local:/backup/projects/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值