rsync 增量备份跳过修改文件因默认仅比对 mtime 和 size,内容未变但时间戳或权限变动即误判同步;加 --checksum 可强制校验内容确保准确。

rsync 增量备份时为什么跳过修改过的文件?
因为默认不比较内容,只看 mtime 和 size —— 只要文件被 touch 过或权限改了但内容没变,rsync 就可能误判为“已同步”。
- 加
--checksum强制逐块校验(慢但准),尤其适合 NFS 或某些容器挂载场景下 mtime 不可靠的情况 - 避免用
-a单独跑备份:它隐含-t(保留时间戳),反而掩盖真实变更;建议拆成-rlptgoD,按需去掉t - 注意
--ignore-times和--size-only是互斥的,后者跳过时间检查只比大小,适合日志轮转后文件名不变但内容全换的场景
用 dd 备份整个系统盘会不会把坏块也复制过去?
会。dd 是纯字节拷贝,不识别文件系统结构,遇到磁盘坏道直接报 Input/output error 并中断,或者静默跳过(取决于设备层设置)。
云点滴客户解决方案是针对中小企业量身制定的具有简单易用、功能强大、永久免费使用、终身升级维护的智能化客户解决方案。依托功能强大、安全稳定的阿里云平 台,性价比高、扩展性好、安全性高、稳定性好。高内聚低耦合的模块化设计,使得每个模块最大限度的满足需求,相关模块的组合能满足用户的一系列要求。简单 易用的云备份使得用户随时随地简单、安全、可靠的备份客户信息。功能强大的报表统计使得用户大数据分析变的简单,
- 先用
smartctl -a /dev/sdX看Reallocated_Sector_Ct和Current_Pending_Sector,数值非零就别用 dd 直拷 - 真要物理镜像,改用
ddrescue:它自动跳过坏块、记录日志、支持断点续传,命令是ddrescue -d -r3 /dev/sdX image.img rescue.log - 备份完别直接 dd 回写验证 —— 先用
file image.img确认是 ext4/LVM 等预期格式,再 mount -o ro 检查关键目录是否存在
systemd 的 btrfs snapshot 怎么避免快照爆炸?
btrfs subvolume snapshot 本身不占空间,但一旦原数据被覆盖或删除,快照就会“固化”占用实际空间;没人清理的话,/var/lib/machines 或 /home 下几十个快照能把根分区撑爆。
- 别依赖
snapper默认策略:它的 timeline_cleanup 默认只删 10 天内的 hourly 快照,但对 root 分区这种低频变更场景意义不大 - 用
btrfs filesystem usage /查看各子卷实际占用,重点关注Data和System列,不是Overall那行 - 定期执行
btrfs subvolume delete /path/to/old-snap,注意不能在挂载状态下删当前子卷,且删前确认没被grub-btrfs引用(否则启动项失效)
恢复时 chroot 进去发现网络不通、journalctl 报 no such file or directory
因为 /proc /sys /dev 没正确挂载,systemd 启动依赖这些虚拟文件系统,裸 chroot 下它连自己的 PID 1 都找不到。
- 进 chroot 前必须挂载:
mount -t proc /proc /mnt/procmount -t sysfs /sys /mnt/sysmount --rbind /dev /mnt/devmount --make-rslave /mnt/dev(这步漏掉会导致 udev 启动失败) - 如果用 LVM 或加密卷,chroot 前得先
vgchange -ay和cryptsetup open,否则 /dev/mapper/xxx 根本不存在 - journalctl 报错还可能是 /run 没挂载 tmpfs:
mount -t tmpfs tmpfs /mnt/run,否则 systemd-journald 写不了日志文件







