Guest User

new script "snapshot+systemupdate.sh"

a guest
May 16th, 2020
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.18 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # Snapshot + System Update
  4. # ---------------------------
  5. # Snapshot - Rollback - Btrfs
  6. # ---------------------------
  7.  
  8. BTRFS=/usr/bin/btrfs
  9. CP=/usr/bin/cp
  10. ECHO=/usr/bin/echo
  11. GREP=/usr/bin/grep
  12. MKDIR=/usr/bin/mkdir
  13. MOUNT=/usr/bin/mount
  14. MV=/usr/bin/mv
  15. PIKAUR=/usr/bin/pikaur
  16. PACMAN=/usr/bin/pacman
  17. REFLECTOR=/usr/bin/reflector
  18. SED=/usr/bin/sed
  19. SUDO=/usr/bin/sudo
  20. CHECKUPDATES=/usr/bin/checkupdates
  21. MAXSAVESNAPSHOTS=23
  22. SNAPSHOTHISTORYFOLDER="/.snapshots/STABLE-Snapshot-History"
  23.  
  24. # ---------------------------
  25. #      Snapshot System
  26. # ---------------------------
  27. [ -d ${SNAPSHOTHISTORYFOLDER} ] || $SUDO $MKDIR -p ${SNAPSHOTHISTORYFOLDER}
  28. if $CHECKUPDATES ; then
  29. # if true ; then
  30. bootstate=`$MOUNT | $GREP "on / type btrfs" | $GREP "subvol=/@snapshots/TESTING"`
  31. if [ -z "$bootstate" ]
  32.     then
  33.         $ECHO ""
  34.         $ECHO $bootstate
  35.         $ECHO ""
  36.         $ECHO "System ist nicht mit TESTING hochgefahren !"
  37.         $ECHO "ENDE !"
  38.         sleep 2
  39.         exit 1
  40.     else
  41.     # -------- make new OLDSTABLE --------
  42.         $SUDO $BTRFS subvolume delete /.snapshots/OLDSTABLE
  43.         $SUDO $MV /.snapshots/STABLE /.snapshots/OLDSTABLE
  44.         $SUDO $SED -i 's/STABLE/OLDSTABLE/g' /.snapshots/OLDSTABLE/etc/fstab
  45.         $SUDO $CP /boot/vmlinuz-linux-stable /boot/vmlinuz-linux-oldstable
  46.         $SUDO $CP /boot/initramfs-linux-stable.img /boot/initramfs-linux-oldstable.img
  47.         # $SUDO $CP /boot/vmlinuz-linux-lts-stable /boot/vmlinuz-linux-lts-oldstable
  48.         # $SUDO $CP /boot/initramfs-linux-lts-stable.img /boot/initramfs-linux-lts-oldstable.img
  49.        
  50.         # --------- make new STABLE ----------
  51.         $SUDO $BTRFS subvolume snapshot / /.snapshots/STABLE
  52.         $SUDO $SED -i 's/TESTING/STABLE/g' /.snapshots/STABLE/etc/fstab
  53.         $SUDO $CP /boot/vmlinuz-linux /boot/vmlinuz-linux-stable
  54.         $SUDO $CP /boot/initramfs-linux.img /boot/initramfs-linux-stable.img
  55.         # $SUDO $CP /boot/vmlinuz-linux-lts /boot/vmlinuz-linux-lts-stable
  56.         # $SUDO $CP /boot/initramfs-linux-lts.img /boot/initramfs-linux-lts-stable.img
  57.  
  58.         # --------- backup TESTING and Kernels ----------
  59.         TIMESTAMP=`date +%Y-%m-%d-%H%M`
  60.         $SUDO $BTRFS subvolume snapshot / ${SNAPSHOTHISTORYFOLDER}/${TIMESTAMP}_STABLE
  61.         $SUDO cp /boot/vmlinuz-linux ${SNAPSHOTHISTORYFOLDER}/${TIMESTAMP}_vmlinuz-linux
  62.         $SUDO cp /boot/initramfs-linux.img ${SNAPSHOTHISTORYFOLDER}/${TIMESTAMP}_initramfs-linux.img
  63.  
  64.         # ---------------------------
  65.         #      Update System
  66.         # ---------------------------
  67.         $SUDO $REFLECTOR -f 8 -p https -i ".de/" --sort rate --save /etc/pacman.d/mirrorlist
  68.         # $SUDO $PACMAN -Syu
  69.         $PIKAUR -Syu # aktualisiert AUR gleich mit :-)
  70.        
  71.         # --------------------------------------------
  72.         #    delete old saved Snapshots and Kernels
  73.         # --------------------------------------------
  74.         typeset -i FILECOUNT
  75.         FILECOUNT=0
  76.         for file in `ls -r ${SNAPSHOTHISTORYFOLDER} | grep _STABLE` ; do
  77.             FILECOUNT=$FILECOUNT+1
  78.             [ $FILECOUNT -le $MAXSAVESNAPSHOTS ] && continue
  79.             kernelfilename=`echo ${file} | cut -c-15`
  80.             $SUDO $BTRFS subvolume delete ${SNAPSHOTHISTORYFOLDER}/${file}
  81.         #   echo  "deleting snapshot ${SNAPSHOTHISTORYFOLDER}/${file}"
  82.             [ -f "${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_vmlinuz-linux" ] && $SUDO rm ${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_vmlinuz-linux
  83.             echo "delete file ${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_vmlinuz-linux"
  84.             [ -f "${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_initramfs-linux.img" ] && $SUDO rm ${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_initramfs-linux.img
  85.             echo "delete file ${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_initramfs-linux.img"
  86.         done
  87.  
  88.         # --------------------------------------------
  89.         #    Balance Filesystem
  90.         # --------------------------------------------
  91.         $SUDO $BTRFS balance start -dusage=5 /btrfs
  92. fi
  93. else
  94.     echo "Keine Updates vorhanden - ENDE !"
  95.     sleep 2
  96. fi
  97.         # -------------------------------------------------------------------------------------
  98.         #    disable automatic-search for grub - only 00_header 40_custom 41_custom are needed
  99.         # -------------------------------------------------------------------------------------
  100.         for file in `ls /etc/grub.d/ | grep -v ^4 | grep -v README | grep -v ^00 | grep -v disabled$` ; do
  101.             $SUDO chmod 644 /etc/grub.d/$file
  102.             $SUDO mv /etc/grub.d/$file /etc/grub.d/"$file"_disabled
  103.         done
Add Comment
Please, Sign In to add comment