rsync
是一个非常流行的命令行工具,用于高效地同步文件和目录。它广泛用于 Linux 和 UNIX 系统,但也可以在 Windows 上通过 Cygwin 或 WSL (Windows Subsystem for Linux) 使用。本文将介绍 rsync
的基本概念、特点以及如何使用它来同步文件。
rsync
(remote synchronization)是一种快速、多功能的文件传输工具。它可以通过 LAN (局域网)、WAN (广域网) 或者互联网来同步文件和目录。rsync
的设计目标是提供最快的数据传输速度,同时减少网络流量和磁盘 I/O。
rsync
仅传输文件的变化部分,而不是整个文件,这大大减少了数据传输量。rsync
可以压缩数据,进一步减少网络流量。rsync
支持多种操作系统,包括 Linux、Unix、Windows 等。rsync [选项] 源路径 目标路径
选项 | 说明 |
---|---|
-a |
归档模式,保留文件属性(权限、时间戳等),并递归同步目录。 |
-v |
显示详细输出。 |
-z |
压缩传输的数据,节省带宽。 |
-r |
递归同步目录。 |
-P |
显示传输进度,并支持断点续传。 |
-e |
指定远程 Shell(如 ssh )。 |
--delete |
删除目标中源不存在的文件(保持完全同步)。 |
--exclude |
排除指定的文件或目录。 |
--include |
包含指定的文件或目录。 |
-n 或 --dry-run |
模拟运行,不实际执行同步。 |
将本地目录同步到另一个目录:
rsync -av /path/to/source/ /path/to/destination/
/
表示同步目录内容,而不是目录本身。将本地文件同步到远程服务器:
rsync -avz -e ssh /path/to/source/ user@remote:/path/to/destination/
-e ssh
:使用 SSH 协议传输。将远程服务器的文件同步到本地:
rsync -avz -e ssh user@remote:/path/to/source/ /path/to/destination/
保持目标与源完全一致,删除目标中源不存在的文件:
rsync -av --delete /path/to/source/ /path/to/destination/
同步时排除某些文件或目录:
rsync -av --exclude '*.log' /path/to/source/ /path/to/destination/
rsync -av --exclude={'file1.txt','dir2'} /path/to/source/ /path/to/destination/
将文件同步到备份目录,并保留每次备份的版本:
rsync -av --backup --backup-dir=backup-$(date +%Y%m%d) /path/to/source/ /path/to/destination/
测试同步操作,不实际执行:
rsync -av --dry-run /path/to/source/ /path/to/destination/
限制传输带宽(单位为 KB/s):
rsync -av --bwlimit=1000 /path/to/source/ /path/to/destination/
仅传输文件的一部分(适用于大文件):
rsync -av /path/to/source/ /path/to/destination/
0
同步文件权限和所有者信息:
rsync -av /path/to/source/ /path/to/destination/
1
保留符号链接:
rsync -av /path/to/source/ /path/to/destination/
2
权限问题
如果目标路径需要 root 权限,可以在命令前加 sudo
:
rsync -av /path/to/source/ /path/to/destination/
3
SSH 连接问题
如果使用 SSH 连接远程服务器,确保 SSH 密钥配置正确,或者使用密码登录。
路径问题
注意源路径末尾的 /
,它会影响同步行为:
/
:同步目录内容。/
:同步目录本身。断点续传
使用 -P
选项支持断点续传:
rsync -av /path/to/source/ /path/to/destination/
4
rsync
是 Linux 系统中文件同步和备份的利器,支持本地和远程同步,具有高效、灵活的特点。通过掌握其基本用法和常用选项,可以轻松实现文件同步、备份和迁移任务。无论是日常维护还是大规模数据迁移,rsync
都是一个不可或缺的工具。