rsync 是 Linux 系统中使用的强大文件同步和传输工具。它允许在不同位置之间复制和同步文件和目录,无论是本地还是远程系统之间。以下是如何使用 rsync 的逐步指南,并附有实际的示例。

1. 安装 rsync

在大多数 Linux 发行版中,rsync 已经预装。如果需要安装,可以使用以下命令:

对于基于 Debian/Ubuntu 的系统:

sudo apt-get update
sudo apt-get install rsync

对于基于 Red Hat/CentOS 的系统:

sudo yum install rsync

2. rsync 的基本语法

rsync 的基本语法如下:

rsync [选项] 源 目的
  • :你想要复制或同步的文件或目录的位置。
  • 目的:你希望复制或同步文件或目录的位置。

3. 使用示例

  • 在本地复制文件:
    rsync -avh /路径/到/文件.txt /路径/到/目的地/
    • -a:存档模式;保留权限、修改时间和链接。
    • -v:详细模式;显示传输的进度。
    • -h:人类可读;以可读格式显示大小。
  • 在本地同步目录:
    rsync -avh /路径/到/目录/ /路径/到/目的地/

    注意:源目录末尾的斜杠 (/) 非常重要。如果省略,rsync 会在目标目录中创建源目录。

  • 与远程服务器同步文件:
    rsync -avh /路径/到/目录/ 用户@远程服务器:/路径/到/目的地/
  • 从远程服务器同步文件到本地:
    rsync -avh 用户@远程服务器:/路径/到/目录/ /本地/路径/到/目的地/

4. 常用的 rsync 选项

  • -z:在传输过程中压缩数据,以减少带宽使用。
  • --delete:删除目的地中不再存在于源中的文件。
  • -e ssh:使用 SSH 进行数据传输,确保安全连接。

5. 实时同步

如果你想持续进行实时同步,可以将 rsyncinotifywait 结合使用,inotifywait 是一个监控文件系统更改的命令。

基本示例:

while inotifywait -r -e modify,create,delete /路径/到/目录; do
rsync -avz /路径/到/目录/ 用户@远程服务器:/路径/到/目的地/
done

6. 高级使用:排除项和日志

  • 排除特定的文件或目录:
    rsync -avh --exclude '文件_或_目录' /路径/到/目录/ /路径/到/目的地/
  • 将输出记录到日志文件:
    rsync -avh /路径/到/目录/ /路径/到/目的地/ --log-file=/路径/到/日志文件.log

7. 安全考虑

  • 使用 SSH 与 rsync 为了确保传输的安全,建议使用 SSH。
    rsync -avh -e ssh /路径/到/目录/ 用户@远程服务器:/路径/到/目的地/

8. 结论

rsync 是一个在 Linux 上同步和复制文件的多功能且强大的工具。通过本指南,你可以有效地使用 rsync 进行各种任务,从本地复制到远程同步。