在 Linux 中使用 Rsync 传输文件

在 Linux 中使用 Rsync 传输文件

使用 Rsync 在系统间高效传输和同步文件的指南。

Rsync 是一款用于在系统间传输和同步文件的强大工具。它广泛应用于备份、文件镜像以及在本地目录或远程服务器之间更新文件。对于任何使用 Linux 系统的人来说,无论管理备份还是在机器之间传输文件,了解如何使用 Rsync 都是必不可少的。

什么是 Rsync?

Rsync 是一种文件传输工具,它通过仅传输源文件与目标文件之间的差异部分来高效复制文件。该特性减少了数据传输量并加快了处理速度,使其成为系统管理员和开发人员的热门选择。

安装 Rsync

Rsync 在大多数 Linux 发行版的官方软件源中均有提供,且通常已预装。以下是在各系统上的安装方法:

步骤 1:在 Ubuntu 和 Debian 上安装 Rsync

sudo apt install rsync

步骤 2:在 FreeBSD 上安装 Rsync

sudo pkg install rsync

步骤 3:在 Arch Linux 上安装 Rsync

sudo pacman -S rsync

步骤 4:在 Fedora、AlmaLinux、Rocky Linux 和 VzLinux 上安装 Rsync

sudo dnf install rsync

步骤 5:在 CentOS 上安装 Rsync

sudo yum install rsync

Rsync 命令语法

使用 Rsync 的基本语法为:

rsync [OPTIONS] SOURCE DESTINATION

其中:

  • OPTIONS: 修改 Rsync 工作方式的标志(例如 -a 用于归档模式)。
  • SOURCE: 要同步的文件或目录。
  • DESTINATION: 源文件要复制到的目标位置。

对于通过 SSH 进行的远程传输,请使用以下语法:

rsync [OPTIONS] [USER@]HOST:SOURCE DESTINATION

将 [USER@]HOST 替换为远程用户的凭据和主机地址。

常用的 Rsync 选项

以下是一些常用的选项:

  • -a, --archive: 启用归档模式,保留文件属性。
  • -v, --verbose: 在传输过程中提供详细信息。
  • -z, --compress: 在传输过程中压缩数据以节省带宽。
  • --exclude=PATTERN: 排除与特定模式匹配的文件。
  • --delete: 删除目标位置中源目录不存在的文件。

使用 Rsync 传输文件和目录

开始之前,您可以搭建一个测试环境:

步骤 1:创建测试目录

mkdir rsync-test

步骤 2:进入该目录

cd rsync-test

步骤 3:创建示例文件

touch file1 file2 file3

传输本地文件

要将文件复制到名为 dest的新目录,请使用:

rsync file1 file2 file3 dest

验证文件是否已复制:

ls dest/

传输本地目录

要复制目录及其内容,请使用 -a 标志:

rsync -a dest/ dest-copy

验证复制操作:

ls dest-copy/

排除文件或目录

要排除特定文件不被复制,请使用 --exclude 标志:

rsync -a --exclude 'file2' --exclude 'dest*' . output

验证输出:

ls output/

将数据同步到远程机器

要将文件同步到远程机器,请使用:

rsync -hazvP --delete --stats . [email protected]:synced_from_local

该命令执行以下操作:

  • -h: 以人类可读的格式输出数字。
  • -a: 启用归档模式。
  • -z: 在传输过程中压缩数据。
  • -v: 启用详细输出。
  • --delete: 从目标位置删除源目录中已不存在的文件。
  • --stats: 提供传输摘要。

使用 SSH 登录到远程机器:

ssh [email protected]

结语

Rsync 是一款功能多样的工具,它简化了文件传输和同步。无论您是在备份文件还是在系统之间传输数据,Rsync 的高效性与灵活性都使其成为一项不可或缺的利器。

优点

  • 仅传输差异部分,实现高效的文件传输。
  • 保留文件属性和元数据。
  • 支持压缩以节省带宽。
  • 提供灵活的包含/排除文件选项。

缺点

  • 由于选项众多,初学者可能会觉得较为复杂。
  • 远程传输需要 SSH 访问权限。
  • 如果配合删除选项使用不当,可能会导致数据丢失。

注意事项

本文仅供学习参考。使用命令时,请务必将占位符替换为实际数据。在参考任何结论之前,请对照原始来源进行核实。

常见问题

  • 什么是 Rsync? — Rsync 是一种文件传输工具,可在本地和远程系统之间高效同步文件。
  • 如何在 Linux 上安装 Rsync? — 使用适用于您发行版的包管理器,例如 apt, dnf,或者 pacman.
  • 该 -a 选项在 Rsync 中有什么作用? — 该 -a 选项可启用归档模式,在传输过程中保留文件属性。
  • Rsync 可以用于远程传输吗? — 可以,Rsync 可以通过 SSH 与远程系统相互传输文件。
  • 该 --exclude 选项有什么作用? — 该 --exclude 选项允许您指定在传输过程中跳过的文件或目录。
  • Rsync 使用起来安全吗? — 安全,但使用类似 --delete这样的选项时需格外小心,因为它们会从目标位置删除文件。
Free field guide

Docker Security Checklist

Lock down your containers from build to runtime — 29 practical controls covering images, runtime flags, secrets, and the daemon. Enter your email — you'll get the PDF instantly, plus new posts on Docker, Linux & security.