Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # Snapshot + System Update
- # ---------------------------
- # Snapshot - Rollback - Btrfs
- # ---------------------------
- BTRFS=/usr/bin/btrfs
- CP=/usr/bin/cp
- ECHO=/usr/bin/echo
- GREP=/usr/bin/grep
- MKDIR=/usr/bin/mkdir
- MOUNT=/usr/bin/mount
- MV=/usr/bin/mv
- PIKAUR=/usr/bin/pikaur
- PACMAN=/usr/bin/pacman
- REFLECTOR=/usr/bin/reflector
- SED=/usr/bin/sed
- SUDO=/usr/bin/sudo
- CHECKUPDATES=/usr/bin/checkupdates
- MAXSAVESNAPSHOTS=23
- SNAPSHOTHISTORYFOLDER="/.snapshots/STABLE-Snapshot-History"
- # ---------------------------
- # Snapshot System
- # ---------------------------
- [ -d ${SNAPSHOTHISTORYFOLDER} ] || $SUDO $MKDIR -p ${SNAPSHOTHISTORYFOLDER}
- if $CHECKUPDATES ; then
- # if true ; then
- bootstate=`$MOUNT | $GREP "on / type btrfs" | $GREP "subvol=/@snapshots/TESTING"`
- if [ -z "$bootstate" ]
- then
- $ECHO ""
- $ECHO $bootstate
- $ECHO ""
- $ECHO "System ist nicht mit TESTING hochgefahren !"
- $ECHO "ENDE !"
- sleep 2
- exit 1
- else
- # -------- make new OLDSTABLE --------
- $SUDO $BTRFS subvolume delete /.snapshots/OLDSTABLE
- $SUDO $MV /.snapshots/STABLE /.snapshots/OLDSTABLE
- $SUDO $SED -i 's/STABLE/OLDSTABLE/g' /.snapshots/OLDSTABLE/etc/fstab
- $SUDO $CP /boot/vmlinuz-linux-stable /boot/vmlinuz-linux-oldstable
- $SUDO $CP /boot/initramfs-linux-stable.img /boot/initramfs-linux-oldstable.img
- # $SUDO $CP /boot/vmlinuz-linux-lts-stable /boot/vmlinuz-linux-lts-oldstable
- # $SUDO $CP /boot/initramfs-linux-lts-stable.img /boot/initramfs-linux-lts-oldstable.img
- # --------- make new STABLE ----------
- $SUDO $BTRFS subvolume snapshot / /.snapshots/STABLE
- $SUDO $SED -i 's/TESTING/STABLE/g' /.snapshots/STABLE/etc/fstab
- $SUDO $CP /boot/vmlinuz-linux /boot/vmlinuz-linux-stable
- $SUDO $CP /boot/initramfs-linux.img /boot/initramfs-linux-stable.img
- # $SUDO $CP /boot/vmlinuz-linux-lts /boot/vmlinuz-linux-lts-stable
- # $SUDO $CP /boot/initramfs-linux-lts.img /boot/initramfs-linux-lts-stable.img
- # --------- backup TESTING and Kernels ----------
- TIMESTAMP=`date +%Y-%m-%d-%H%M`
- $SUDO $BTRFS subvolume snapshot / ${SNAPSHOTHISTORYFOLDER}/${TIMESTAMP}_STABLE
- $SUDO cp /boot/vmlinuz-linux ${SNAPSHOTHISTORYFOLDER}/${TIMESTAMP}_vmlinuz-linux
- $SUDO cp /boot/initramfs-linux.img ${SNAPSHOTHISTORYFOLDER}/${TIMESTAMP}_initramfs-linux.img
- # ---------------------------
- # Update System
- # ---------------------------
- $SUDO $REFLECTOR -f 8 -p https -i ".de/" --sort rate --save /etc/pacman.d/mirrorlist
- # $SUDO $PACMAN -Syu
- $PIKAUR -Syu # aktualisiert AUR gleich mit :-)
- # --------------------------------------------
- # delete old saved Snapshots and Kernels
- # --------------------------------------------
- typeset -i FILECOUNT
- FILECOUNT=0
- for file in `ls -r ${SNAPSHOTHISTORYFOLDER} | grep _STABLE` ; do
- FILECOUNT=$FILECOUNT+1
- [ $FILECOUNT -le $MAXSAVESNAPSHOTS ] && continue
- kernelfilename=`echo ${file} | cut -c-15`
- $SUDO $BTRFS subvolume delete ${SNAPSHOTHISTORYFOLDER}/${file}
- # echo "deleting snapshot ${SNAPSHOTHISTORYFOLDER}/${file}"
- [ -f "${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_vmlinuz-linux" ] && $SUDO rm ${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_vmlinuz-linux
- echo "delete file ${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_vmlinuz-linux"
- [ -f "${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_initramfs-linux.img" ] && $SUDO rm ${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_initramfs-linux.img
- echo "delete file ${SNAPSHOTHISTORYFOLDER}/${kernelfilename}_initramfs-linux.img"
- done
- # --------------------------------------------
- # Balance Filesystem
- # --------------------------------------------
- $SUDO $BTRFS balance start -dusage=5 /btrfs
- fi
- else
- echo "Keine Updates vorhanden - ENDE !"
- sleep 2
- fi
- # -------------------------------------------------------------------------------------
- # disable automatic-search for grub - only 00_header 40_custom 41_custom are needed
- # -------------------------------------------------------------------------------------
- for file in `ls /etc/grub.d/ | grep -v ^4 | grep -v README | grep -v ^00 | grep -v disabled$` ; do
- $SUDO chmod 644 /etc/grub.d/$file
- $SUDO mv /etc/grub.d/$file /etc/grub.d/"$file"_disabled
- done
Add Comment
Please, Sign In to add comment