ansitest/VIRTBOX/bkpsys-2fsarchive.sh
2021-04-12 13:02:49 -05:00

77 lines
2.9 KiB
Bash

#!/bin/bash
# Intention: bare-metal backup and restore linux running system (root), quite handy for restoring to VM
# It is STRONGLY recommended to get used to doing a full bare-metal backup of root before doing any package updates/upgrades
# REF: http://crunchbang.org/forums/viewtopic.php?id=24268
# DEPENDS: fsarchiver, /root/bin/boojum/BKPDEST.mrg (up to date with a valid destination dir)
# NOTE define a PATH here if you want to run from CRON
# NOTE if you're running stuff like mysql or anything making live updates, you should stop the related service
keepdays=31
rootdev=$(df / |grep /dev |awk '{print $1}')
bkpdate=$(date +%Y%m%d)
# xxx TODO EDITME vv edit BKPDEST to define your backup destination dir before running this
source /root/bin/boojum/BKPDEST.mrg # now provides mount test
dest=$bkpdest/notshrcompr
ddir=$dest/bkpsys-$myhn
mkdir -pv $ddir
chmod 750 $ddir # drwxr-x---
cd $ddir || failexit 199 "! Could not CD to $ddir"
# need shorter filename for UDF restores 2017.0827
#outfile=bkpsys--p2300m-dell-1550-studio--backup-root-sda6--antix16-64--debian-no-systemd--1tb-drive--$bkpdate-fsarc1.fsa
outfile="bkpsys-$myhn-64-debstable10-$bkpdate-fsarc-ZSTD.fsa"
# xxx TODO ^^ EDITME
cp -v /tmp/fdisk-l.txt $ddir
cp -v /tmp/smartctl.txt $ddir
cp -v $0 $ddir
cp -v ~/bin/boojum/RESTORE-fsarchive-root*.sh $ddir
# copy restore script to backup dir, goes with mkrestoredvdiso.sh
# NOTE autoclean !! find bkps and flist files more than XX days old and delete
cd $ddir && \
find $ddir/* \( -name "bkp*fsa" -o -name "flist*" \) -type f -mtime +$keepdays -exec /bin/rm -v {} \;
echo "o $0 - backing up ROOT"
df -hT / $dest
date
numproc=$(nproc --ignore=1)
#time fsarchiver -v -o -A -z 1 -j 2 savefs \
# NOTE older / LTS distros may need to use lower-case -z since the package ver may not support zstd; ubuntu 20.04 LTS should be OK
time fsarchiver -o -A -Z 1 -j $numproc savefs \
$ddir/$outfile \
$rootdev
cd $ddir
fsarchiver archinfo $outfile 2> flist--$outfile.txt
ls -lh $ddir/*
echo "$(date) - $0 done"
exit;
NOTE this script does NOT cover zfs-as-root on linux!
run bkpcrit.sh for that before doing any update/upgrades
HOWTO restore:
# time fsarchiver restfs backup-root-sda1--fryserver--ubuntu1404-*-fsarc1.fsa id=0,dest=/dev/sdf1
Statistics for filesystem 0
* files successfully processed:....regfiles=159387, directories=25579, symlinks=49276, hardlinks=25, specials=108
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0
real 4m26.116s
( 3.9GB )
PROTIP fsarchiver can restore to a different filesystem OTF such as xfs, should Just Work as long as you edit fstab
after restore (make sure no filesystem-specific mount options such as {commit,errors=remount-ro};
+ changing ext4 to auto may also work)
and before booting restored system / VM
NOTE if you have a separate /home (and you should) you will need to restore that as well into the VM b4 booting it