> 压缩与归档 > rsync

完全掌握rsync命令

这是关于在Linux中有效同步和备份文件和目录的`rsync`命令的指南。可以安全快速地在本地和远程系统之间执行增量复制和同步。

主要选项

通过组合`rsync`命令的各种选项来设置文件同步和备份任务。

1. 基础同步

2. 传输模式和选项

生成的命令:

请尝试组合命令。

描述:

`rsync` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

rsync的工作原理

`rsync`使用“增量编码(delta encoding)”算法,仅传输文件的更改部分,从而有效利用网络带宽。因此,在同步大型文件或多个文件时非常快速且高效。

rsync的主要特性

`rsync`与其他复制工具的核心功能差异。

  • 增量传输 (Delta Transfer): 仅识别源和目标文件之间的差异进行传输。通过仅传输更改的块来最大化效率,而不是重新复制整个文件。
  • 增量备份 (Incremental Backup): 仅复制自上次备份以来更改的文件,因此无需每次都进行完整备份,节省时间和空间。
  • 远程同步: 通过包括SSH在内的各种远程Shell,以加密通道传输文件,提高安全性。
  • 文件属性保留: 使用归档模式(`-a`)时,保留文件的所有属性,包括权限、所有者、组、时间戳、符号链接等。

尾部斜杠的意义

`rsync`中源路径是否加尾部斜杠(`/`)是非常重要的。 - `source/`: 复制`source`目录 **中的内容**。(例如: `cp source/* dest/` 类似) - `source`: 复制`source`目录 **本身**。(例如: `cp -r source dest/` 类似) 如果不能理解这个区别,可能会导致意外结果。

使用示例

通过`rsync`命令的实际使用示例,制定文件同步和备份策略。

本地目录同步 (归档模式)

rsync -av /path/to/source_dir/ /path/to/destination_dir/

将`source_dir`的内容同步到`destination_dir`。保留权限、时间等所有属性。`source_dir`中不存在的文件不会从`destination_dir`中删除。

将目录镜像到远程服务器 (备份)

rsync -avz --delete --progress /local/my_data/ user@remote_host:/remote/backup/

将本地的`my_data`目录内容镜像到远程服务器的`/backup/`目录。源中不存在的文件也会在目标中删除。使用压缩并显示进度。

从远程服务器获取特定文件

rsync -avz --include='*.log' --exclude='*' user@remote_host:/var/log/ /tmp/logs/

从远程服务器的`/var/log/`目录获取`.log`文件到本地的`/tmp/logs/`目录。

在不实际执行的情况下预览更改

rsync -avz --delete --dry-run /path/to/source/ /path/to/destination/

不实际传输或删除文件,而是预先显示将发生的更改。在进行重要同步之前,始终建议使用。

使用不同的SSH端口进行同步

rsync -avz -e "ssh -p 2222" /local/src/ user@remote_host:/remote/dest/

使用2222端口而非默认SSH端口(22)与远程服务器同步文件。


相同类别命令