Rsync 命令确实支持全量同步和增量同步,具体实现方式如下:
一、全量同步
-
基础语法
使用
-a
(归档模式)参数可实现全量备份,包含递归复制目录、保留符号链接、权限、时间戳等属性:rsync -avz /源目录 /目标目录
例如:
rsync -avz /var/www/html /backup/html
该命令会将
/var/www/html
目录下的所有文件完整复制到/backup/html
,包括子目录和特殊文件类型。 -
注意事项
-
若目标目录已存在且内容不同,该命令会覆盖目标目录原有数据;
-
建议先使用
rsync -av --dry-run /源目录 /目标目录
进行模拟备份,确认无误后再执行实际操作。
-
二、增量同步
-
核心优势
Rsync 通过对比源文件与目标文件的差异(如大小、修改时间),仅传输变化部分,显著提高传输效率。
-
实现方式
-
首次同步 :执行全量备份,后续同步时自动转为增量传输;
-
手动触发 :使用
-a
参数启动首次同步后,后续同步只需添加时间戳或权限变化参数:rsync -avz --update /源目录 /目标目录
或
rsync -avz --link-dest=/目标目录 /源目录
其中:
-
--update
:仅同步源文件比目标文件新的部分; -
--link-dest
:指定目标目录作为基准,保留符号链接并跳过已同步文件。
-
-
-
高级特性
-
压缩传输 :通过
-z
参数压缩数据流,减少带宽占用; -
排除特定文件 :使用
--exclude
参数过滤不需要同步的文件(如日志文件); -
安全传输 :结合
ssh
使用(如rsync -avz -e ssh /源目录 user@host:/目标目录
),实现加密传输。
-
三、对比其他工具
与 scp
(全量拷贝)或 tar
(打包后传输)相比,Rsync 的增量机制使其在数据变化频繁的场景下效率更高。例如,同步一个每天更新的小型文件,Rsync 可仅需传输修改部分,而 scp
需要重复传输整个文件。
四、示例场景
-
本地备份 :
rsync -avz /home/user/documents /backup/documents
-
远程同步 :
rsync -avz -e ssh /home/user/documents user@remote_host:/backup/documents
-
排除日志文件 :
rsync -avz --exclude='*.log' /var/log /backup/log
-
压缩与权限保留 :
rsync -avz --delete /source /destination | gzip > /destination.tar.gz
通过灵活运用参数,Rsync 可满足从全量备份到高效增量同步的多样化需求。