Add chroot and backup scripts

This commit is contained in:
ItsDrike 2021-05-03 15:31:15 +02:00
parent db3fe3ff43
commit 8f37b3e30e
No known key found for this signature in database
GPG key ID: B5F6B41F708C3ADD
3 changed files with 54 additions and 0 deletions

23
home/.local/bin/gentoo-chroot Executable file
View file

@ -0,0 +1,23 @@
#!/bin/sh
# Make sure the partition is mounted according to fstab
mount /mnt/gentoo 2>/dev/null
# Mount necessary directories for chroot to be possible
mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
# Chroot with bash shell
chroot /mnt/gentoo /bin/bash
# Unmount recursively mounted directories
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
# Remount partition accordingly to fstab
# (the above umountings will unmount gentoo completely,
# which means that remounting is necessary)
mount /mnt/gentoo

View file

@ -0,0 +1,31 @@
#!/bin/bash
# Script to perform incremental backups using rsync
# It is often ran as crontab rule for automated backup solution
#
# This script will respect .rsync-filter files, which can be used
# to define custom exclude rules for files/dirs in which it is present
if [ $# -ne 2 ]; then
echo "Invalid amount of arguments passed!"
echo "Arguments: [Source path] [Backup path]"
echo " Source path: directory to be backed up, usually '/'"
echo " Backup path: directory to back up to (destination), usually mounted drive"
exit
fi
SOURCE_DIR="$1"
BACKUP_DIR="$2"
DATETIME="$(date '+%Y-%m-%d_%H:%M:%S')"
BACKUP_PATH="${BACKUP_DIR}/${DATETIME}"
LATEST_LINK="${BACKUP_DIR}/latest"
mkdir -p "$BACKUP_DIR"
rsync -avHAXS \
--delete \
--filter='dir-merge /.rsync-filter' \
--link-dest "${LATEST_LINK}" \
"${SOURCE_DIR}/" "${BACKUP_PATH}"
ln -sf "${BACKUP_PATH}" "${LATEST_LINK}"