📜  Linux 中的 rsync 命令和示例(1)

📅  最后修改于: 2023-12-03 15:32:41.385000             🧑  作者: Mango

Linux 中的 rsync 命令和示例

简介

rsync 是一个开源软件,用于在本地或远程计算机之间同步文件和目录。它可以在本地的文件系统之间同步文件,也可以通过 ssh 连接同步远程计算机之间的文件。

rsync 可以复制文件、文件夹和链接,支持多种选择和过滤器,非常适合备份和同步文件。它使用基于比较的算法减少数据传输并节省带宽和时间。

安装

rsync 可以在 Linux、macOS 和 Windows(通过 Cygwin 或 Windows Subsystem for Linux)上运行。在大多数 Linux 发行版中,rsync 都已经默认安装了。可以通过以下命令检查 rsync 是否已经安装:

rsync --version

如果显示如下信息,则表示 rsync 已经安装:

rsync  version 3.1.2  protocol version 31

如果没有安装,则可以使用以下命令安装:

在 Debian / Ubuntu 系统上:

sudo apt-get update
sudo apt-get install rsync

在 Fedora / CentOS / RHEL 系统上:

sudo yum install rsync
基本用法

将本地文件复制到远程主机:

rsync [源文件] [目标主机:目标路径]

例如,下面的命令将本地的 file.txt 文件复制到 192.168.0.100 主机的 /data/backup 目录中:

rsync file.txt 192.168.0.100:/data/backup

将远程主机上的文件复制到本地:

rsync [来源主机:源路径] [目标路径]

例如,下面的命令将 192.168.0.100 主机上的 /data/backup/file.txt 文件复制到本地的 ~/backup 目录中:

rsync 192.168.0.100:/data/backup/file.txt ~/backup
过滤器

rsync 可以使用过滤器忽略不需要复制的文件或目录。过滤器有两种类型:include(包含)和exclude(排除)。它们通常被定义为 --include--exclude 选项。

例如,以下命令将只复制 ~/Documents 目录及其子目录中的所有 .txt 文件,而忽略其他类型的文件和目录:

rsync -avz --include '*/' --include '*.txt' --exclude '*' ~/Documents/ remote:backup/

该命令中,-avz 选项表示将以递归方式复制所有文件,并保留所有文件属性。--include '*/' 表示包含所有子目录,--include '*.txt' 表示包含所有 .txt 文件,--exclude '*'表示排除所有其他类型的文件和目录。

远程 shell

rsync 可以通过 ssh 连接到远程计算机并执行操作。可以使用 --rsh 选项指定 ssh 客户端程序。

例如,以下命令使用 ssh 连接到远程主机,并将 ~/Documents 目录复制到远程主机的 /backup 目录中:

rsync -avz -e ssh ~/Documents remote:backup/

-e 选项表示使用 ssh 客户端。如果没有指定,则默认使用 rsh 客户端。

总结

rsync 是一个非常强大和实用的工具,可用于备份和同步文件和目录。通过掌握 rsync 基本用法和过滤器的使用,可以更有效地使用 rsync,从而提高工作效率。