Skip to content

rsync 命令:远程文件同步工具

1. 命令简介

rsync 是一个快速、多功能的文件复制工具。它可以在本地复制文件,或者通过网络在本地和远程系统之间同步文件。rsync 以其增量传输算法而闻名,只传输文件的变化部分,大大减少了数据传输量。

2. 基本语法

bash
rsync [选项] 源 目标

3. 常用选项

  • -a:归档模式,保留所有文件属性
  • -v:详细模式,显示详细信息
  • -z:压缩传输
  • -r:递归复制目录
  • -u:仅复制较新的文件
  • --delete:删除目标位置多余的文件
  • -n--dry-run:模拟运行,不实际执行
  • -e:指定远程 shell 程序

4. 基础使用示例

  1. 本地同步:

    bash
    rsync -av source_directory/ destination_directory/
  2. 远程同步(从本地到远程):

    bash
    rsync -avz /local/dir/ user@remote_host:/remote/dir/
  3. 远程同步(从远程到本地):

    bash
    rsync -avz user@remote_host:/remote/dir/ /local/dir/
  4. 使用 SSH 进行远程同步:

    bash
    rsync -avz -e ssh /local/dir/ user@remote_host:/remote/dir/

5. 进阶使用技巧

  1. 使用 --delete 选项保持完全同步:

    bash
    rsync -avz --delete source/ destination/
  2. 排除特定文件或目录:

    bash
    rsync -av --exclude='*.log' source/ destination/
  3. 仅同步特定类型的文件:

    bash
    rsync -av --include='*.txt' --exclude='*' source/ destination/
  4. 限制带宽使用:

    bash
    rsync -avz --bwlimit=1000 source/ destination/

6. 实用示例

  1. 创建远程备份:

    bash
    rsync -avz --backup --backup-dir=/path/to/backups /source/ user@remote:/destination/
  2. 使用 rsync 作为备份工具:

    bash
    rsync -avb --delete --backup-dir=/path/to/backups /source/ /destination/
  3. 镜像整个网站:

    bash
    rsync -avz --delete --exclude='.htaccess' /local/website/ user@remote:/var/www/html/
  4. 在两个远程系统之间同步:

    bash
    rsync -avz user1@host1:/source/ user2@host2:/destination/

7. 注意事项

  • 使用 --delete 选项时要特别小心,确保不会意外删除重要文件。
  • 在首次使用新的 rsync 命令时,建议先使用 --dry-run 选项进行测试。
  • 源路径末尾的斜杠 / 很重要,它决定了是复制目录本身还是目录的内容。

8. 相关命令

  • scp:安全复制
  • cp:复制文件和目录
  • sftp:安全文件传输协议
  • tar:归档工具

9. 技巧与建议

  1. 使用 --progress 显示传输进度:

    bash
    rsync -avz --progress source/ destination/
  2. 创建 rsync 的别名以简化常用命令:

    bash
    alias sync-docs='rsync -avz --delete ~/Documents/ user@remote:/backup/documents/'
  3. 使用 --partial 支持断点续传:

    bash
    rsync -avz --partial large_file user@remote:/destination/
  4. 在 cron 作业中使用 rsync 进行定期备份:

    bash
    0 1 * * * rsync -avz --delete /source/ /backup/

rsync 是一个强大而灵活的文件同步和传输工具。它不仅高效,而且可以处理各种复杂的同步场景。无论是本地文件复制,还是远程服务器间的数据同步,rsync 都能胜任。掌握 rsync 可以大大提高文件管理和系统备份的效率。对于系统管理员和需要频繁进行文件同步的用户来说,rsync 是一个不可或缺的工具。