From 5bb5238a9d91402bc997402b7ed173ccedca80d0 Mon Sep 17 00:00:00 2001 From: Eric Renfro Date: Mon, 4 Nov 2024 16:18:03 -0500 Subject: [PATCH] Added common backup functions to bashrc.d --- .bashrc.d/backup-func | 90 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 .bashrc.d/backup-func diff --git a/.bashrc.d/backup-func b/.bashrc.d/backup-func new file mode 100644 index 0000000..1be3343 --- /dev/null +++ b/.bashrc.d/backup-func @@ -0,0 +1,90 @@ +function backup-home() { + local archive="$1" + local target="$2" + local hostname + local date + + if [[ -z "$1" ]]; then + archive="$(grep -E '^ID=' /etc/os-release | cut -d'=' -f2)$(grep -E '^VERSION_ID=' /etc/os-release | cut -d'=' -f2)" + if [[ -z "$archive" ]]; then + archive="latest" + fi + fi + + if [[ -z "$2" ]]; then + if [[ -d "/mnt/storage/psi-jack/Backups" ]]; then + target="/mnt/storage/psi-jack/Backups" + else + target="/home/psi-jack/Backups" + fi + fi + + if [[ -f "/etc/hostname" ]]; then + hostname=$(< /etc/hostname) + else + hostname=$(hostname) + fi + + date=$(date +"%Y-%m-%d") + + mkdir -p "${target}/${archive}/${hostname}" + + pushd /home &>/dev/null + tar --exclude=psi-jack/.local/share/Steam \ + --exclude=psi-jack/.local/share/bottles \ + --exclude=psi-jack/.local/share/lutris \ + --exclude=psi-jack/Games \ + --exclude=psi-jack/Downloads \ + --exclude=psi-jack/"GOG Games" \ + --exclude=psi-jack/ISO \ + --exclude=psi-jack/Music \ + --exclude=psi-jack/Vaults \ + --exclude=psi-jack/tmp \ + --exclude=psi-jack/.cache \ + --exclude=psi-jack/.firestorm_x64/cache \ + --exclude=psi-jack/.thunderbird \ + --exclude=psi-jack/.var \ + -cvvf "${target}/${archive}/${hostname}/${hostname}-${date}_home.tar" \ + psi-jack + zstd --rm -6 "${target}/${archive}/${hostname}/${hostname}-${date}_home.tar" + popd &>/dev/null +} + +function backup-system() { + local archive="$1" + local target="$2" + local hostname + local date + + if [[ -z "$1" ]]; then + archive="$(grep -E '^ID=' /etc/os-release | cut -d'=' -f2)$(grep -E '^VERSION_ID=' /etc/os-release | cut -d'=' -f2)" + if [[ -z "$archive" ]]; then + archive="latest" + fi + fi + + if [[ -z "$2" ]]; then + if [[ -d "/mnt/storage/psi-jack/Backups" ]]; then + target="/mnt/storage/psi-jack/Backups" + else + target="/home/psi-jack/Backups" + fi + fi + + if [[ -f "/etc/hostname" ]]; then + hostname=$(< /etc/hostname) + else + hostname=$(hostname) + fi + + date=$(date +"%Y-%m-%d") + + mkdir -p "${target}/${archive}/${hostname}" + + pushd / &>/dev/null + sudo tar -cvvf "${target}/${archive}/${hostname}/${hostname}-${date}_system.tar" etc root + sudo chown psi-jack: "${target}/${archive}/${hostname}/${hostname}-${date}_system.tar" + zstd --rm -6 "${target}/${archive}/${hostname}/${hostname}-${date}_system.tar" + popd &>/dev/null +} +