Skip to content

Instantly share code, notes, and snippets.

@pejobo
Created February 19, 2017 13:42
Show Gist options
  • Save pejobo/f1b1ee35f4e9f3c3881eb096deacac58 to your computer and use it in GitHub Desktop.
Save pejobo/f1b1ee35f4e9f3c3881eb096deacac58 to your computer and use it in GitHub Desktop.
make a backup of my running raspberry pi (filesystem is f2fs)
#!/bin/sh
target=/media/stuff/raspberry/backup.img
size_of_image=6G
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
# check loop device availability
losetup /dev/loop0 && exit 1 || true
truncate -s $size_of_image $target
losetup /dev/loop0 $target
parted -s /dev/loop0 mklabel msdos
parted -s /dev/loop0 mkpart primary fat32 0% 64Mib
parted -s /dev/loop0 set 1 boot on
parted -s /dev/loop0 mkpart primary ext2 64Mib 100%
mkfs.vfat -I -F 32 -n SYSTEM /dev/loop0p1
mkfs.f2fs -l root /dev/loop0p2
mkdir -p boot-backup
mkdir -p root-backup
mount /dev/loop0p1 boot-backup/
mount /dev/loop0p2 root-backup/
rsync -av /boot/ boot-backup/
rsync -av --one-file-system / root-backup/
sync
umount root-backup/ boot-backup/
rmdir root-backup
rmdir boot-backup
losetup -d /dev/loop0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment