这篇文章给大家介绍一下 Linux 系统中常用的文件同步和备份工具:rsync。它支持本地和远程数据同步,提供了灵活且高效的数据复制、备份和恢复方式。rsync使用 增量同步技术,可以只同步修改过的部分,还能帮你节省带宽和时间。- 源路径:可以是本地路径,也可以是远程路径(格式:user@remote:/path)
- 目标路径:可以是本地路径,也可以是远程路径(格式:user@remote:/path)
| |
|---|
-v | 显示详细输出(verbose),显示同步过程中的文件信息 |
-a | 归档模式(archive),等同于 -rlptgoD,保留文件的所有属性 |
-r | |
-z | |
-P | 显示进度(progress)并启用部分传输(partial) |
-e | |
--delete | |
-n | |
-u | |
-l | |
--exclude | |
rsync -av /source/directory/ /destination/directory/
- -a 归档模式,保留文件的所有属性(包括权限、时间戳、符号链接等)
- -v 显示详细信息source/ 和 destination/ 后的 / 确保同步的是目录中的内容,而不是目录本身
rsync -avz /local/path/ user@remote:/remote/path/
- user@remote:/path 指定目标远程路径
rsync -avz user@remote:/remote/path/ /local/path/
默认情况下,rsync 会使用 rsh 作为远程 shell,但如果你想使用 SSH(通常更安全),可以通过 -e 选项指定:rsync -avz -e ssh user@remote:/remote/path/ /local/path/
rsync -av --ignore-existing /source/ /destination/
- --ignore-existing 表示只同步源目录中新添加的文件,已存在的文件不会被覆盖
rsync -av --delete /source/ /destination/
--delete 会删除目标目录中,源目录没有的文件,适用于备份时保持目标与源一致。在正式执行同步前,使用 -n 查看将同步哪些文件:rsync -avz -n /source/ /destination/
使用 --exclude 排除不需要同步的文件或目录:rsync -av --exclude='*.tmp' --exclude='backup/' /source/ /destination/
- --exclude='*.tmp' 排除所有 .tmp 文件
- --exclude='backup/' 排除 backup 目录
rsync -avz /local/path/ user@remote:/remote/backup/path/
将本地 /local/path/ 备份到远程服务器的 /remote/backup/path/rsync -avz --link-dest=/previous/backup/ /source/ /new/backup/
--link-dest 指定前一个备份的路径,rsync 会使用硬链接,仅同步变化的部分。可以将 rsync 与 cron 结合,定期进行自动备份。比如,每天凌晨 1 点执行备份:0 1 * * * rsync -avz /source/ user@remote:/backup/
可以使用 --bwlimit 限制 rsync 使用的带宽。例如,限制带宽为 1000 KB/s:rsync -avz --bwlimit=1000 /source/ /destination/
对于大文件或长时间的同步任务,可以使用 -P 查看进度:rsync -avzP /source/ user@remote:/destination/
-P 是 --progress 和 --partial 的结合,显示进度并支持部分传输。 会保留文件的权限、时间戳等元数据,但如果你需要修改或不保留某些属性,可以使用选项来控制:rsync 是非常适合搞运维的小伙伴!不仅支持本地和远程同步,而且提供了增量同步、压缩、排除、删除等多种功能,适用于各种备份和文件传输场景。