第一次用 rsync 备份:只传变化的部分,省时又省心
重要文件只放在一台机器上,心里总不踏实。复制粘贴整个文件夹当备份,文件一多就慢得受不了,还容易把新旧版本搞混。rsync 就是为了解决这个问题:它只传变化的部分,第一次全量、之后增量,备份一次比一次快。
rsync 最基本的用法只有一个命令:rsync -av 源目录/ 目标目录/。-a 是归档模式,保留权限、时间戳和目录结构;-v 是输出过程,让你看清传了什么。注意源目录后面的斜杠:带斜杠表示同步目录里的内容,不带斜杠表示把整个目录本身复制过去。这个细节第一次用最容易搞错,先在测试目录试一次再动真格。
为什么说它只传变化的部分?rsync 会先比较两边文件的大小和修改时间,没变的文件直接跳过;变了的文件也只传变化的数据块,而不是整个文件重新传一遍。所以每天备份一个几 GB 的项目文件夹,实际传输的可能只有几 MB。这也是它比 cp 和 scp 更适合做日常备份的原因:cp 每次全量复制,scp 每次全量传输,只有 rsync 懂得“只补差价”。
备份到远程机器也很简单:把目标换成 user@远程主机:路径 即可,比如 rsync -av ~/项目/ user@备份机:/backup/项目/。第一次会提示确认主机指纹并输入密码,之后配合 SSH 免密登录就能做到一键备份。想先看清会发生什么、又不想真的改动目标,可以加 --dry-run:它只打印将要同步的文件列表,什么都不写,是正式备份前最安全的演练方式。
三个新手常踩的坑。第一是误删:加了 --delete 后,源目录删掉的文件也会在目标同步删除,用错方向会把备份清空,所以 --delete 只在确认源是唯一正确版本时才用。第二是排除文件:日志、缓存、node_modules 这类不需要备份的东西,用 --exclude 'node_modules/' 排除掉,能省下大量时间和空间。第三是断点续传:大文件传到一半断网,不加 --partial 就得从头再来,加上它可以接着传。
把备份变成习惯,靠的不是记性而是定时任务。把 rsync 命令写进一个小脚本,再用 crontab 每天凌晨跑一次,备份就成了不需要操心的背景工作。第一次配通之后,可以再进一步:用 --link-dest 做带硬链接的历史快照,每次备份只占增量空间,却能随时回到任意一天的状态。备份的价值平时看不见,出问题那天才知道它值多少钱。
- 点赞
- 收藏
- 关注作者
评论(0)