rsync
是一个快速、灵活的文件同步和传输工具,广泛用于 Linux 和 Unix 系统中。它可以将文件和目录从一个位置同步到另一个位置,支持本地和远程传输,同时具有压缩、排除特定文件等功能。
rsync
命令基本语法
rsync [选项] 源路径 目标路径
常用选项详解
-
-a
或--archive
:归档模式,表示递归传输目录,并保持符号链接、文件权限、时间戳、组和所有者信息等。相当于-rlptgoD
。 -
-v
或--verbose
:显示详细信息,输出每个传输的文件名。 -
-z
或--compress
:传输时压缩文件,有助于加快速度。 -
-r
或--recursive
:递归处理目录及子目录。 -
-l
或--links
:复制符号链接。 -
-p
或--perms
:保留文件权限。 -
-t
或--times
:保持文件的修改时间。 -
-g
或--group
:保留文件所属组。 -
-o
或--owner
:保留文件所有者。 -
-D
:保留设备文件和特殊文件。 -
-e ssh
:通过 SSH 进行数据传输。适用于远程同步。 -
--delete
:删除目标目录中源路径中不存在的文件。这是为了保证目标目录与源目录完全一致。 -
--exclude=PATTERN
:排除与模式PATTERN
匹配的文件或目录。 -
--progress
:显示传输进度。 -
--partial
:保留未完成的传输文件,下次继续传输。 -
--dry-run
:模拟执行,显示哪些文件会被传输,但不实际传输。
常用的 rsync
命令示例
-
本地文件和目录同步:
rsync -av /source/directory/ /destination/directory/
这个命令将
/source/directory/
中的所有内容(包括子目录和文件)同步到/destination/directory/
中。选项-a
确保了所有文件的属性和目录结构都被保留。 -
远程同步:
rsync -avz /local/directory/ user@remote_host:/remote/directory/
这个命令通过 SSH 将本地
/local/directory/
同步到远程主机remote_host
的/remote/directory/
。选项-z
表示压缩传输。 -
从远程服务器同步到本地:
rsync -avz user@remote_host:/remote/directory/ /local/directory/
这个命令将远程服务器上的
/remote/directory/
同步到本地的/local/directory/
。 -
同步并删除目标路径中多余的文件:
rsync -av --delete /source/directory/ /destination/directory/
这个命令会将源目录的内容同步到目标目录,同时删除目标目录中在源目录中已不存在的文件。
-
排除特定文件或目录:
rsync -av --exclude='*.tmp' --exclude='backup/' /source/directory/ /destination/directory/
这个命令会同步
/source/directory/
到/destination/directory/
,但会排除所有.tmp
文件和backup/
目录。 -
仅显示要同步的文件(模拟执行):
rsync -av --dry-run /source/directory/ /destination/directory/
这个命令不会实际传输文件,只会列出哪些文件将被同步。
-
显示同步进度:
rsync -av --progress /source/directory/ /destination/directory/
这个命令会在同步过程中显示每个文件的传输进度。
其他高级功能
-
增量备份:
rsync
的优势之一是它的增量备份功能,它只会同步自上次同步后发生变化的文件或数据块。这减少了网络传输量,并加快了备份速度。 -
带宽限制:
使用
--bwlimit=RATE
可以限制rsync
的带宽使用,RATE
可以是 KB/s 或 MB/s。rsync -avz --bwlimit=1000 /source/directory/ /destination/directory/
这个命令限制了传输速率为 1000 KB/s。
rsync
是一个非常强大且灵活的工具,适用于各种文件同步和备份场景。了解并掌握这些常用选项和命令,能极大提高文件管理的效率。