使用 SquashFS 进行完整系统备份
可以使用 SquashFS 格式制作整个文件系统的压缩备份存档。由于其随机访问能力,备份和检索花费的时间相对较少,但是除了附加之外的任何类型的修改目前都是不可能的。
设备文件 | 描述 |
---|---|
/dev/sdB | 备份驱动器 |
/dev/sdL | Live 介质 |
/dev/sdSRC | 要备份的驱动器 |
优点和缺点
优点
缺点
注意
- squashfs-tools-ng 可能支持 SquashFS 镜像文件,但 Windows 本身根本不支持无分区驱动器。
- 当您需要 游泳圈 时,不要抓住 救生圈。 文件共享和备份应该在不同的磁盘上。请购买足够的备份硬件。
准备备份驱动器
警告
- 备份驱动器上的所有数据都将丢失。
- 如果指定了错误的设备文件,机器上的所有数据都可能丢失。
- 使用 wipefs 清除所有分区
/dev/sdBN
,然后清除分区表/dev/sdB
。 - 同步所有写入缓存
# sync
- 通知操作系统分区表更改
# partprobe
- 检查坏块
- 如果备份驱动器是 SSD,请使用 S.M.A.R.T.。
- 如果备份驱动器是 HDD,请使用 badblocks。
准备 Live 介质
安装指南#准备安装介质 或 archiso 到 /dev/sdL
注意: 创建 SquashFS 文件系统需要 squashfs-tools,它包含在 官方 Arch Linux 安装镜像 中。
备份
提示: 如果您没有足够的 USB 端口来连接备份驱动器和 Live 介质
- 启动 Live 介质
- 当启动加载器菜单出现时,按 'e'
- 将 copytoram 附加到 内核参数
# udisksctl power-off -b /dev/sdL
(需要带有 udisks2 的 archiso releng 在 packages.x86_64 中)- 确保 Live 介质停止旋转并断开连接
挂载您要备份的文件系统。(例如,/dev/sdSRC 到 /mnt)
# fsck /dev/sdSRC # mount -o ro /dev/sdSRC /mnt
备份(示例脚本)
警告
- 备份驱动器上的所有数据都将丢失。
- 如果指定了错误的设备文件,机器上的所有数据都可能丢失。
# mksquashfs /mnt /dev/sdB \ -not-reproducible \ -xattrs \ -wildcards \ -noappend \ -progress \ -mem 5G \ -e \ var/cache/pacman/pkg \ var/lib/pacman/sync \ var/log/journal \ efi \ boot/grub \ boot/initramfs-linux"*".img \ boot/vmlinuz-linux
- -not-reproducible
- 稍微提高备份速度
- -noappend
- 覆盖
- -mem
- 授予 mksquashfs 的 RAM
- -e
- 排除目录/文件列表
(可选)在 QEMU 中测试备份
授予权限
$ sudo chown $USER:$USER /dev/sdB
启动 QEMU
$ qemu-system-x86_64 \ -kernel /boot/vmlinuz-linux \ -append "root=/dev/sdB ro loglevel=3 init=/usr/lib/systemd/systemd" \ -initrd /boot/initramfs-linux-fallback.img \ -drive file=/dev/sdB,index=0,media=disk,format=raw \ -m virtual_machine_ram_in_MiB \ --enable-kvm \ -cpu host
(可选)检查备份
获取备份日期
# date --date=@"$(unsquashfs -mkfs-time /dev/sdB)"
更多超级块信息
# unsquashfs -stat /dev/sdB
校验和
# COUNT="$(unsquashfs -stat /dev/sdB | grep -F 'Filesystem size' | cut -d' ' -f3)" # echo "$COUNT Byte" # numfmt --to=iec-i "$COUNT" # head -c "$COUNT" /dev/sdB | sha1sum | tee -a sha1sum.txt
从备份中检索文件
# mount /dev/sdB /mnt # cp /mnt/path/to/file /path/to/destination
恢复备份
注意
使系统在恢复后可启动
- 修复 fstab
- arch-chroot
- 重新生成 initramfs
- 安装和配置 启动引导器