ArchWiki / Full system backup with SquashFS
ArchWiki / Full system backup with SquashFS
es:Full system backup with SquashFS ja:SquashFS によるフルシステムバックアップ
Compressed backup archives of whole filesystems can be made in the SquashFS format. Backup and retrieval takes relatively less time with its random access capability, but any kind of modification other than appending is not yet possible.
Pros and cons
Pros:
No partitioning, no guessing how much size is required
Should be supported by most rescue disks running at least Linux 2.6.29 (released in 2009)
Random access[citation needed], with a plain
mountDuplicate files are removed by default (unless
-no-duplicatesflag is on)
Cons:
Access Control Lists are not yet supported, and therefore not backed up
Not accessible from Windows1
Appendable but impossible to remove things from it
To use the disk for some other purposes, you have to destroy the backup2
# squashfs-tools-ng may support SquashFS image files but Windows itself does not support partitionless drives at all. # Do not grab the lifebuoy when you need a swim ring. File sharing and backup should be in separate disks. Please buy adequate backup hardware.
Prepare the backup drive
* All data on the backup drive will be lost. * All data on machine may be lost if an incorrect device file is specified.
Wipe out all partitions
/dev/sdBN, then the partition table/dev/sdB, with wipefs.Synchronize all write caches
# syncInform the OS of partition table changes
# partprobe
Check for bad blocks:
If the backup drive is an SSD, use S.M.A.R.T..
If the backup drive is an HDD, use badblocks.
Prepare a live medium
Installation guide#Prepare an installation medium or archiso to /dev/sdL
Creating SquashFS filesystem requires squashfs-tools, which is included in the official Arch Linux installation image.
Back up
Installation guide#Boot the live environment
If you do not have enough USB ports for both the backup drive and live medium:
# Boot the live medium
# When the boot loader menu appears, press 'e'
# Append copytoram to kernel parameters
# # udisksctl power-off -b /dev/sdL (requires archiso releng with udisks2 in packages.x86_64)
# Make sure the live medium stops spinning and disconnect it
Mount filesystems you would like to backup. (e.g. /dev/sdSRC to /mnt)
# fsck /dev/sdSRC
# mount -o ro /dev/sdSRC /mntBack up (example script)
* All data on the backup drive will be lost. * All data on machine may be lost if an incorrect device file is specified.
# 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: Slightly increase backup speed
-noappend: Overwrite
-mem: RAM granted to mksquashfs
-e: List of exclude dirs/files
(Optional) Test backup in QEMU
Grant permission
$ sudo chown $USER:$USER /dev/sdBLaunch 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(Optional) Inspect backup
Get backup date
# date --date=@"$(unsquashfs -mkfs-time /dev/sdB)"More superblock information
# unsquashfs -stat /dev/sdBChecksum
# 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.txtRetrieve file from backup
# mount /dev/sdB /mnt
# cp /mnt/path/to/file /path/to/destinationRestore backup
To make system bootable after restore: * fix fstab * arch-chroot ** regenerate the initramfs ** install and configure boot loader