我在脚本中使用这些命令来创建 SD 卡的映像备份,同时 Linux 操作系统(OpenWrt)在其上运行。
rootfs 是 1000MiB,所以我只添加前 300 个块。这样我可以使用 Win32 Disk Imager 将备份中的启动和根文件系统恢复到我喜欢的任何其他 SD 卡(选择“只读分配的分区”)
imagesPath="/mnt/usb/openwrt/BackupOfImages/"
image_file=${imagesPath}OpenWrt-Image-$(date "+%Y-%m-%d-%H-%M-%S").img.gz
sync
dd if=/dev/mmcblk0 bs=4M count=300 | pv | gzip > $image_file
但是,当我使用gunzip并安装创建的.img文件时,我看到我正在处理的某些文件...它们的最新版本没有备份,而是备份包含这些文件的旧版本。我在运行备份脚本之前所做的最近编辑不包含在备份中。我认为在脚本中的 dd 命令之前使用sync 命令会刷新缓存,以便备份所有文件的最新版本?
我知道最佳实践是在运行 dd 命令之前卸载 sd 卡上的文件系统,但我的用例不允许我这样做。我还做错了什么?
干杯。
答案1
也许同步命令不在正确的位置。我不是专家,但我会写:
dd if=/dev/mmcblk0 bs=4M count=300 && sync | gzip > $image_file