Backups
Backup of MiniPc
bash shell procedure : backup-minipc within folder ~/utils
#!/bin/bash
# only run as root
if [ "$(id -u)" != '0' ]
then
echo "this script has to be run as root"
exit 1
fi
#
ARGS=4
E_BADARGS=65
if [ $# -ne "$ARGS" ]
then
echo "==================================================================================="
echo -e "Hoe gebruiken ?"
echo -e " Script vereist naast `basename $0` vier argumenten"
echo -e " arg1 : je_backup_volume_naam"
echo " - /run/media/ulefr01/Hitachi1/ voor Inspiron"
echo " - /myssd2_data/ voor Inspiron"
echo " - /media/ulefr01/Hitachi1/ voor Inspiron"
echo " - /media/ulefr01/Hitachi4/ voor Latitude_E5440"
echo " - /media/ulefr01/Hitachi3/ voor Latitude_E7440"
echo " - /mybackups voor minipc"
echo -e " arg2 : je_os_device_naam /dev/sda, /dev/sdb, /dev/nvme0n1"
echo -e " arg3 : prefix log bestandsnaam"
echo " - Inspiron_myssd2_data"
echo " - Inspiron_Hitachi1"
echo " - Latitude_E5440_Hitachi4"
echo " - Latitude_E7440_Hitachi3"
echo " - Minipc_mybackups"
echo -e " arg4 : laptop naam"
echo " - Inspiron"
echo " - Latitude_E5440"
echo " - Latitude_E7440"
echo " - Minipc_UM790"
echo " Voorbeeld : sudo ./backup-inspiron /run/media/ulefr01/Hitachi1/ /dev/sda Inspiron_Hitachi1 Inspiron"
echo "==================================================================================="
exit $E_BADARGS
fi
VOL=$1
DEV=$2
LOG=$3
LAPTOP=$4
DIR="dir.lst"
DIR2="dir2.lst"
RES=3
DATUM="$(date +%Y%m%d)"
LF=$LAPTOP_$LOG'_'$DATUM'.log'
echo "LF is " $LF
if ! cd $VOL
then
echo "volume niet actief $VOL"
exit 2
fi
echo "backup volume is $PWD"
if ! [ -e $VOL$DIR ]
then
echo $VOL$DIR ' bestaat niet !'
exit $RES
fi
RES=4
if [ -e $VOL$DIR ]
then
if [ -e $VOL$DIR2 ]
then
rm $VOL$DIR2 -v >>$VOL$LF 2>&1 3>&1
fi
echo "Maak eerst een kopie van $VOL$DIR, cp $VOL$DIR $VOL$DIR2"
echo "Maak eerst een kopie van $VOL$DIR, cp $VOL$DIR $VOL$DIR2" >>$VOL$LF 2>&1 3>&1
cp $VOL$DIR $VOL$DIR2 -v >>$VOL$LF 2>&1 3>&1
fi
BKUPS=$(cat $VOL$DIR | wc -l)
echo "er worden $BKUPS backups gemaakt op volume $VOL"
echo "er worden $BKUPS backups gemaakt op volume $VOL" >>$VOL$LF 2>&1
# lees laatste lijn
line=$(tail -n 1 $VOL$DIR)
echo "lijn :" $line
echo "datum :" $DATUM
if [ $line == $DATUM ]
then
cp $VOL$DIR2 $VOL$DIR -v >>$VOL$LF 2>&1 3>&1
echo "deze backup is vandaag al eens gedaan !! Exit"
exit $RES
fi
#
DATUM="$(date +%Y%m%d)"
LF=$LAPTOP_$LOG'_'$DATUM'.log'
echo "LF is " $LF
RES=5
echo $DATUM >>$VOL$DIR
echo "datum $DATUM toegevoegd in $DIR"
echo "datum $DATUM toegevoegd in $DIR" >>$VOL$LF 2>&1 3>&1
# lees eerste lijn uit $DIR
line=$(head -n 1 $VOL$DIR)
echo "line is " $line
if [ $line -ne $DATUM ]
then
# verwijder alle backups gemaakt op datum $line
rm -v $VOL*$line* >>$VOL$LF 2>&1 3>&1
# verwijder de eerste lijn uit $DIR
sed -i 1d $VOL$DIR
echo "eerste lijn = $line is uit $VOL$DIR"
echo "eerste lijn = $line is uit $VOL$DIR" >>$VOL$LF 2>&1 3>&1
fi
echo " inxi " >>$VOL$LF 2>&1 3>&1
echo "------" >>$VOL$LF 2>&1 3>&1
/usr/bin/inxi -FazGISZMxxxpu
/usr/bin/inxi -FazGISZMxxxpu >>$VOL$LF 2>&1 3>&1
echo -e " lsblk "
echo " lsblk " >>$VOL$LF 2>&1 3>&1
echo "-------" >>$VOL$LF 2>&1 3>&1
lsblk -o +FSTYPE,PARTLABEL,FSAVAIL,FSSIZE
lsblk -o +FSTYPE,PARTLABEL,FSAVAIL,FSSIZE >>$VOL$LF 2>&1 3>&1
if [ -b /dev/sda ]
then {
echo -e " gdisk /dev/sda "
echo " gdisk /dev/sda " >>$VOL$LF 2>&1 3>&1
echo "----------------" >>$VOL$LF 2>&1 3>&1
gdisk -l /dev/sda
gdisk -l /dev/sda >>$VOL$LF 2>&1 3>&1
}
fi
if [ -b /dev/sdb ]
then {
echo -e " gdisk /dev/sdb "
echo " gdisk /dev/sdb " >>$VOL$LF 2>&1 3>&1
echo "----------------" >>$VOL$LF 2>&1 3>&1
gdisk -l /dev/sdb
gdisk -l /dev/sdb >>$VOL$LF 2>&1 3>&1
}
fi
if [ -b /dev/nvme0n1 ]
then {
echo -e " gdisk /dev/nvme0n1 "
echo " gdisk /dev/nvme0n1" >>$VOL$LF 2>&1 3>&1
echo "----------------" >>$VOL$LF 2>&1 3>&1
gdisk -l /dev/nvme0n1
gdisk -l /dev/nvme0n1 >>$VOL$LF 2>&1 3>&1
}
fi
if [ -b /dev/sda ]
then {
echo -e " parted /dev/sda "
echo " parted /dev/sda " >>$VOL$LF 2>&1 3>&1
parted /dev/sda print
parted /dev/sda print >>$VOL$LF 2>&1 3>&1
}
fi
if [ -b /dev/sdb ]
then {
echo -e " parted /dev/sdb "
echo " parted /dev/sdb " >>$VOL$LF 2>&1 3>&1
parted /dev/sdb print
parted /dev/sdb print >>$VOL$LF 2>&1 3>&1
}
fi
if [ -b /dev/nvme0n1 ]
then {
echo -e " parted /dev/nvme0n1 "
echo " parted /dev/nvme0n1 " >>$VOL$LF 2>&1 3>&1
parted /dev/nvme0n1 print
parted /dev/nvme0n1 print >>$VOL$LF 2>&1 3>&1
}
fi
echo -e " blkid "
echo " blkid " >>$VOL$LF 2>&1 3>&1
echo "-------" >>$VOL$LF 2>&1 3>&1
blkid
blkid >>$VOL$LF 2>&1 3>&1
echo -e " pvs "
echo " pvs " >>$VOL$LF 2>&1 3>&1
echo "-----" >>$VOL$LF 2>&1 3>&1
pvs
pvs >>$VOL$LF 2>&1 3>&1
echo -e " vgs "
echo " vgs " >>$VOL$LF 2>&1 3>&1
echo "-----" >>$VOL$LF 2>&1 3>&1
vgs
vgs >>$VOL$LF 2>&1 3>&1
echo -e " lvs "
echo " lvs " >>$VOL$LF 2>&1 3>&1
echo "-----" >>$VOL$LF 2>&1 3>&1
lvs
lvs >>$VOL$LF 2>&1 3>&1
lvs -a -o +devices
lvs -a -o +devices >>$VOL$LF 2>&1 3>&1
if [ -b /dev/sda ]
then {
echo -e "eerste 2047 sectoren van /dev/sda"
echo "eerste 2047 sectoren van /dev/sda" >>$VOL$LF 2>&1 3>&1
echo "---------------------" >>$VOL$LF 2>&1 3>&1
echo "dd if=/dev/sda of=sda2047.mbr bs=512 count=2047"
echo "dd if=/dev/sda of=sda2047.mbr bs=512 count=2047" >>$VOL$LF 2>&1 3>&1
dd if=/dev/sda of=$VOL/sda2047_${DATUM}.mbr bs=512 count=2047
echo "eerste sector van /dev/sda"
echo "eerste sector van /dev/sda" >>$VOL$LF 2>&1 3>&1
echo "---------------------" >>$VOL$LF 2>&1 3>&1
echo "dd if=/dev/sda of=sda.mbr bs=512 count=1"
echo "dd if=/dev/sda of=sda.mbr bs=512 count=1" >>$VOL$LF 2>&1 3>&1
dd if=/dev/sda of=$VOL/sda_${DATUM}.mbr bs=512 count=1
}
fi
if [ -b /dev/sdb ]
then {
echo -e "eerste 2047 sectoren van /dev/sdb"
echo "eerste 2047 sectoren van /dev/sdb" >>$VOL$LF 2>&1 3>&1
echo "---------------------" >>$VOL$LF 2>&1 3>&1
echo "dd if=/dev/sdb of=sdb2047.mbr bs=512 count=2047"
echo "dd if=/dev/sdb of=sdb2047.mbr bs=512 count=2047" >>$VOL$LF 2>&1 3>&1
dd if=/dev/sdb of=$VOL/sdb2047_${DATUM}.mbr bs=512 count=2047
echo "eerste sector van /dev/sdb"
echo "eerste sector van /dev/sdb" >>$VOL$LF 2>&1 3>&1
echo "---------------------" >>$VOL$LF 2>&1 3>&1
echo "dd if=/dev/sdb of=sdb.mbr bs=512 count=1"
echo "dd if=/dev/sdb of=sdb.mbr bs=512 count=1" >>$VOL$LF 2>&1 3>&1
dd if=/dev/sdb of=$VOL/sdb_${DATUM}.mbr bs=512 count=1
}
fi
if [ -b /dev/nvme0n1 ]
then {
echo -e "eerste 2047 sectoren van /dev/nvme0n1"
echo "eerste 2047 sectoren van /dev/nvme0n1" >>$VOL$LF 2>&1 3>&1
echo "---------------------" >>$VOL$LF 2>&1 3>&1
echo "dd if=/dev/nvme0n1 of=nvme0n12047.mbr bs=512 count=2047"
echo "dd if=/dev/nvme0n1 of=nvme0n12047.mbr bs=512 count=2047" >>$VOL$LF 2>&1 3>&1
dd if=/dev/nvme0n1 of=$VOL/nvme0n12047_${DATUM}.mbr bs=512 count=2047
echo "eerste sector van /dev/nvme0n1"
echo "eerste sector van /dev/nvme0n1" >>$VOL$LF 2>&1 3>&1
echo "---------------------" >>$VOL$LF 2>&1 3>&1
echo "dd if=/dev/nvme0n1 of=nvme0n1.mbr bs=512 count=1"
echo "dd if=/dev/nvme0n1 of=nvme0n1.mbr bs=512 count=1" >>$VOL$LF 2>&1 3>&1
dd if=/dev/nvme0n1 of=$VOL/nvme0n1_${DATUM}.mbr bs=512 count=1
}
fi
SECONDS=0
/home/ulefr01/utils/backup-lv $VOL$LF myssd6 boot backup-boot
ELAPSED="Elapsed: $(($SECONDS / 3600)) hrs $((($SECONDS / 60) % 60)) min $(($SECONDS % 60)) sec"
echo "duur backup-boot = " $ELAPSED
echo "duur backup-boot = " $ELAPSED >>$VOL$LF 2>&1 3>&1
TSEC=$(($TSEC + $SECONDS))
SECONDS=0
/home/ulefr01/utils/backup-lv $VOL$LF myssd6 root backup-root
ELAPSED="Elapsed: $(($SECONDS / 3600)) hrs $((($SECONDS / 60) % 60)) min $(($SECONDS % 60)) sec"
echo "duur backup-root = " $ELAPSED
echo "duur backup-root = " $ELAPSED >>$VOL$LF 2>&1 3>&1
TSEC=$(($TSEC + $SECONDS))
SECONDS=0
/home/ulefr01/utils/backup-lv $VOL$LF myssd6 home backup-home
ELAPSED="Elapsed: $(($SECONDS / 3600)) hrs $((($SECONDS / 60) % 60)) min $(($SECONDS % 60)) sec"
echo "duur backup-home = " $ELAPSED
echo "duur backup-home = " $ELAPSED >>$VOL$LF 2>&1 3>&1
TSEC=$(($TSEC + $SECONDS))
SECONDS=0
# echo "udisksctl unmount -b /run/media/ulefr01/data"
# echo "============================================"
# udisksctl unmount -b /run/media/ulefr01/data
/home/ulefr01/utils/backup-lv $VOL$LF myssd6 data backup-data Photos PDF
ELAPSED="Elapsed: $(($SECONDS / 3600)) hrs $((($SECONDS / 60) % 60)) min $(($SECONDS % 60)) sec"
echo "duur backup-data = " $ELAPSED
echo "duur backup-data = " $ELAPSED >>$VOL$LF 2>&1 3>&1
TSEC=$(($TSEC + $SECONDS))
SECONDS=0
/home/ulefr01/utils/backup-dev $VOL$LF backup-bootefi ${DEV}p1
ELAPSED="Elapsed: $(($SECONDS / 3600)) hrs $((($SECONDS / 60) % 60)) min $(($SECONDS % 60)) sec"
echo "duur backup-bootefi = " $ELAPSED
echo "duur backup-bootefi = " $ELAPSED >>$VOL$LF 2>&1 3>&1
TSEC=$(($TSEC + $SECONDS))
# sudo /home/ulefr01/utils/backup-dev backup-efi /dev/sdb1
# sudo /home/ulefr01/utils/backup-dev backup-boot /dev/sdb2
ELAPSED="Elapsed: $(($TSEC / 3600)) hrs $((($TSEC / 60) % 60)) min $(($TSEC % 60)) sec"
echo -e "totale duur = " $ELAPSED
echo "totale duur = " $ELAPSED >>$VOL$LF 2>&1 3>&1
exit ${RES}
Backup-lv
bash shell procedure : backup-lv within folder ~/utils
#!/bin/bash
#
SNAPVOL='mysnap' # name of the snapshot to create
SNAPSIZ='49G' # space to allocate for the snapshot in the volume group
FSAOPTS='-Z11 -j8 -s 1000' # options to pass to fsarchiver
# ----------------------------------------------------------------------------------------------
PATH="${PATH}:/usr/sbin:/sbin:/usr/bin:/bin"
TIMESTAMP="$(date +%Y%m%d-%Hh%M)"
ARGS=4
E_BADARGS=65
if [ $# -lt "$ARGS" ]
then
echo "Usage: `basename $0` log volumegroup logicalvolume backnam exclude "
exit $E_BADARGS
fi
RES=1
log=$1
volumegroup=$2
logvol=$3
backnam=$4
exclude=$5
exclud2=$6
# ----------------------------------------------------------------------------------------------
echo 'backup_lv'
echo '---------'
echo "volumegroup =" $volumegroup
echo "logical volume =" $logvol
echo "backnam =" $backnam
echo '---------'
echo 'backup_lv' >>$log
echo '---------' >>$log
echo "volumegroup =" $volumegroup >>$log
echo "logical volume =" $logvol >>$log
echo "backnam =" $backnam >>$log
echo '---------' >>$log
# ----------------------------------------------------------------------------------------------
# only run as root
if [ "$(id -u)" != '0' ]
then
echo "this script has to be run as root"
exit 1
fi
#
VOLGROP=$volumegroup
ORIGVOL=$logvol
# check that the snapshot does not already exist
if [ -e "/dev/${VOLGROP}/${SNAPVOL}" ]
then
echo "the lvm snapshot already exists, please destroy it by hand first"
echo "the lvm snapshot already exists, please destroy it by hand first" >>$log
exit 1
fi
# create the lvm snapshot
if lvcreate -L ${SNAPSIZ} -s -n ${SNAPVOL} /dev/${VOLGROP}/${ORIGVOL}
then
echo "lvcreate -L ${SNAPSIZ} -s -n ${SNAPVOL} /dev/${VOLGROP}/${ORIGVOL}"
echo "lvcreate -L ${SNAPSIZ} -s -n ${SNAPVOL} /dev/${VOLGROP}/${ORIGVOL}" >>$log
else
echo "creation of the lvm snapshot failed"
echo "creation of the lvm snapshot failed" >>$log
exit 1
fi
echo "creation of the lvm snapshot was successfull"
echo "creation of the lvm snapshot was successfull" >>$log
echo "mount -o remount,acl,user_xattr /dev/${VOLGROP}/${SNAPVOL}"
echo "mount -o remount,acl,user_xattr /dev/${VOLGROP}/${SNAPVOL}" >>$log
mount -o remount,acl,user_xattr /dev/${VOLGROP}/${SNAPVOL}
if [[ -z "$exclude" ]]
then
echo "NULL"
echo "fsarchiver savefs -A -a -L${ORIGVOL} ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa /dev/${VOLGROP}/${SNAPVOL}"
if fsarchiver savefs -A -a -L${ORIGVOL} ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa /dev/${VOLGROP}/${SNAPVOL}
then
echo "fsarchiver savefs -A -a -L${ORIGVOL} ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa /dev/${VOLGROP}/${SNAPVOL} done"
echo "fsarchiver savefs -A -a -L${ORIGVOL} ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa /dev/${VOLGROP}/${SNAPVOL} done" >>$log
RES=0
else
echo "fsarchiver failed"
echo "fsarchiver failed" >>$log
RES=1
fi
else
echo "fsarchiver savefs -A -a -L${ORIGVOL} ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa /dev/${VOLGROP}/${SNAPVOL} --exclude=${exclude} --exclude=${exclud2}"
if fsarchiver savefs -A -a -L${ORIGVOL} ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa /dev/${VOLGROP}/${SNAPVOL} --exclude=${exclude} --exclude=${exclud2}
then
echo "fsarchiver savefs -A -a -L${ORIGVOL} ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa /dev/${VOLGROP}/${SNAPVOL} --exclude=${exclude} --exclude=${exclud2} done"
echo "fsarchiver savefs -A -a -L${ORIGVOL} ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa /dev/${VOLGROP}/${SNAPVOL} --exclude=${exclude} --exclude=${exclud2} done" >>$log
RES=0
else
echo "fsarchiver failed"
echo "fsarchiver failed" >>$log
RES=2
fi
fi
#
sync
#
# remove the snapshot
# if ! lvremove -vf /dev//${VOLGROP}/${SNAPVOL} >/dev/null 2>&1
# if [ -e "/run/media/ulefr01/data/" ]
# then
# sudo umount /run/media/ulefr01/data
# fi
if lvremove -vf /dev//${VOLGROP}/${SNAPVOL}
then
echo "lvremove -vf /dev//${VOLGROP}/${SNAPVOL}"
echo "lvremove -vf /dev//${VOLGROP}/${SNAPVOL}" >>$log
else
echo "cannot remove the lvm snapshot"
echo "cannot remove the lvm snapshot" >>$log
RES=1
fi
#
echo "fsarchiver archinfo ${backnam}-${TIMESTAMP}.fsa 2>${backnam}-${TIMESTAMP}.info "
echo "fsarchiver archinfo ${backnam}-${TIMESTAMP}.fsa 2>${backnam}-${TIMESTAMP}.info " >>$log
fsarchiver archinfo ${backnam}-${TIMESTAMP}.fsa 2>${backnam}-${TIMESTAMP}.info
exit ${RES}
Backup-dev
bash shell procedure : backup-dev within folder ~/utils
#!/bin/bash
#
FSAOPTS='-Z11 -j8 -s 1000' # options to pass to fsarchiver
# ----------------------------------------------------------------------------------------------
PATH="${PATH}:/usr/sbin:/sbin:/usr/bin:/bin"
TIMESTAMP="$(date +%Y%m%d-%Hh%M)"
ARGS=3
E_BADARGS=65
if [ $# -lt "$ARGS" ]
then
echo "Usage: `basename $0` log backnam device "
exit $E_BADARGS
fi
RES=1
log=$1
backnam=$2
device=$3
# ----------------------------------------------------------------------------------------------
echo 'backup-dev'
echo '---------'
echo "backnam =" $backnam
echo "device =" $device
echo '---------'
echo 'backup-dev' >>$log
echo '---------' >>$log
echo "backnam =" $backnam >>$log
echo "device =" $device >>$log
echo '---------' >>$log
# ----------------------------------------------------------------------------------------------
# only run as root
if [ "$(id -u)" != '0' ]
then
echo "this script has to be run as root"
exit 1
fi
#
echo "fsarchiver savefs -A ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa ${device}"
echo "fsarchiver savefs -A ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa ${device}" >>$log
if fsarchiver savefs -A ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa ${device}
then
echo "fsarchiver savefs -A ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa ${device} done"
echo "fsarchiver savefs -A ${FSAOPTS} ${backnam}-${TIMESTAMP}.fsa ${device} done" >>$log
RES=0
else
echo "fsarchiver failed"
echo "fsarchiver failed" >>$log
RES=1
fi
#
sync
#
#
echo "fsarchiver archinfo ${backnam}-${TIMESTAMP}.fsa 2>${backnam}-${TIMESTAMP}.info "
echo "fsarchiver archinfo ${backnam}-${TIMESTAMP}.fsa 2>${backnam}-${TIMESTAMP}.info " >>$log
fsarchiver archinfo ${backnam}-${TIMESTAMP}.fsa 2>${backnam}-${TIMESTAMP}.info
exit ${RES}