From fbb551377b7135580b039d35226348bb77bd88a4 Mon Sep 17 00:00:00 2001 From: Bruno Fontes Date: Sat, 3 Apr 2021 23:09:15 -0300 Subject: [PATCH] fix(backup): Each backup has it's own folder I was previously using one folder for multiple backups, but it doesn't help for pruning old backups. So, now, each backup set has it's own folder, what makes it easier to restore as well. --- Backup/.Backup_HD.sh | 104 +++++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 48 deletions(-) diff --git a/Backup/.Backup_HD.sh b/Backup/.Backup_HD.sh index 474161a..b8cb13a 100755 --- a/Backup/.Backup_HD.sh +++ b/Backup/.Backup_HD.sh @@ -1,36 +1,60 @@ +# Ansi color code variables +red="\e[0;91m" +blue="\e[0;94m" +expand_bg="\e[K" +blue_bg="\e[0;104m${expand_bg}" +red_bg="\e[0;101m${expand_bg}" +green_bg="\e[0;102m${expand_bg}" +green="\e[0;92m" +white="\e[0;97m" +bold="\e[1m" +uline="\e[4m" +reset="\e[0m" + function backup () { # $1 - Repository - # $2-$N - Files/Folders to backup - - #--stats = show stats at end - #--progress = show each file being processed - nice -n 19 borg create --compression auto,zstd,9 --exclude-from=./exclude $1 "$2" + # $2 - Backup name + # $3 - Files/Folders to backup + prepareFolder $1 + echo -e "${blue} `date +%r` - Backing up (compressed)...${reset}" + nice -n 19 borg create --compression auto,zstd,9 --exclude-from=./exclude "$1::$2" "$3" + checkBackup $1 } function backupNoCompression () { # $1 - Repository - # $2-$N - Files/Folders to backup + # $2 - Backup name + # $3 - Files/Folders to backup + prepareFolder $1 + echo -e "${blue} `date +%r` - Backing up (uncompressed)...${reset}" + nice -n 19 borg create --compression none --exclude-from=./exclude "$1::$2" "$3" + checkBackup $1 +} - #--stats = show stats at end - #--progress = show each file being processed - nice -n 19 borg create --compression none --exclude-from=./exclude $1 "$2" +function prepareFolder() { + if [ ! -d "$1" ]; then + mkdir -p "$1" + borg init --encryption=none $1 + else + pruneBackup $1 + fi } function checkBackup() { - echo -n "`date +%r`- Checking the backup..." + echo -e -n "${blue} `date +%r` - Checking the backup...${reset}" borg check "$1" > "$1"_status if [[ $(cat "$1"_status) != "" ]]; then echo -e "\n\033[1;31m ERROR UNPACKING $1 \033[0m" else - echo ".OK!" + echo -e ".${green}OK!${reset}" rm "$1"_status fi echo } function pruneBackup() { - echo -e "\e[97m`date +%r` - Prune old backups...\e[39m" - borg prune -v --list --dry-run --keep-weekly=8 --keep-monthly=12 --keep-yearly=3 $1 + echo -e "${blue} `date +%r` - Prune old backups...${reset}" + borg prune --keep-within=1y --keep-daily=30 --keep-weekly=12 --keep-monthly=24 --keep-yearly=3 $1 } @@ -48,12 +72,10 @@ HDPath="/run/media/bruno/Backup_$ActiveDisk" BACKUPPATH="$HDPath/Backup" YEARMONTH=`date +%Y-%m-%d` -HDYEARMONTH="$BACKUPPATH::$YEARMONTH" echo echo "Disk : $ActiveDisk" echo "HD Backup path : $BACKUPPATH" -echo "HD Year-Month path: $HDYEARMONTH" echo echo "Please, insert Disk #$ActiveDisk and press enter to start backup" read @@ -71,50 +93,36 @@ done # If folder does not exist, exit with error [ ! -d "$HDPath" ] && echo "This disk was used last time. Please, plug Backup_$ActiveDisk before running this script." && read && exit 1 -echo ".OK!" +echo -e ".${green}OK!${reset}" echo -if [ ! -d "$BACKUPPATH" ]; then - mkdir -p "$BACKUPPATH" - borg init --encryption=none $BACKUPPATH +echo -e "${white}`date +%r` - Copying Linux Home folder (1/7)...\e[39m" +echo -e "${white} `date +%r` - Bruno\e[39m" +backup "$HDPath/LinuxHome-Bruno" "$YEARMONTH" "/home/bruno/" || echo "" - #Prune old backups - pruneBackup $BACKUPPATH -fi +echo -e "${white} `date +%r` - Admin\e[39m" +backup "$HDPath/LinuxHome-Admin" "$YEARMONTH" "/home/admin/" || echo "" -echo -e "\e[97m`date +%r` - Copying Linux Home folder (1/7)...\e[39m" -echo -e "\e[97m `date +%r` - Bruno\e[39m" -backup "$HDYEARMONTH-LinuxHome-bruno" "/home/bruno/" || echo "" +echo -e "${white}`date +%r` - Copying Localização folder (2/7)...\e[39m" +backup "$HDPath/Multimedia-Localizacao" "$YEARMONTH" "/run/media/bruno/Multimedia/Localização/" || echo "" -echo -e "\e[97m `date +%r` - Admin\e[39m" -backup "$HDYEARMONTH-LinuxHome-admin" "/home/admin/" || echo "" +echo -e "${white}`date +%r` - Copying My Documents folder (3/7)...\e[39m" +backup "$HDPath/Multimedia-MyDocuments" "$YEARMONTH" "/run/media/bruno/Multimedia/MyDocuments/" || echo "" -echo -e "\e[97m`date +%r` - Copying Localização folder (2/7)...\e[39m" -backup "$HDYEARMONTH-Multimedia-localizacao" "/run/media/bruno/Multimedia/Localização/" || echo "" +echo -e "${white}`date +%r` - Copying Música folder (4/7)...\e[39m" +backup "$HDPath/Multimedia-Musica" "$YEARMONTH" "/run/media/bruno/Multimedia/Música/" || echo "" -echo -e "\e[97m`date +%r` - Copying My Documents folder (3/7)...\e[39m" -backup "$HDYEARMONTH-Multimedia-MyDocuments" "/run/media/bruno/Multimedia/MyDocuments/" || echo "" +echo -e "${white}`date +%r` - Copying Fotos folder (5/7)...\e[39m" +backupNoCompression "$HDPath/Fotos" "$YEARMONTH" "/run/media/bruno/Multimedia/Fotos" || echo "" -echo -e "\e[97m`date +%r` - Copying Música folder (4/7)...\e[39m" -backup "$HDYEARMONTH-Multimedia-musica" "/run/media/bruno/Multimedia/Música/" || echo "" +echo -e "${white}`date +%r` - Copying Video folder (6/7)...\e[39m" +backupNoCompression "$HDPath/Videos" "$YEARMONTH" "/run/media/bruno/Multimedia/Videos" || echo "" -checkBackup "$BACKUPPATH" - -# Rsync Fotos e VMs -echo -e "\e[97m`date +%r` - Copying Fotos folder (5/7)...\e[39m" -backupNoCompression "$HDPath/Fotos::$YEARMONTH" "/run/media/bruno/Multimedia/Fotos" || echo "" -checkBackup "$HDPath/Fotos/" - -echo -e "\e[97m`date +%r` - Copying Video folder (6/7)...\e[39m" -backupNoCompression "$HDPath/Videos::$YEARMONTH" "/run/media/bruno/Multimedia/Videos" || echo "" -checkBackup "$HDPath/Videos/" - -echo -e "\e[97m`date +%r` - Copying Virtual Machines folder (7/7)...\e[39m" -backup "$HDPath/VirtualMachines::$YEARMONTH" "/run/media/bruno/Multimedia/Virtual Machines" || echo "" -checkBackup "$HDPath/VirtualMachines/" +echo -e "${white}`date +%r` - Copying Virtual Machines folder (7/7)...\e[39m" +backup "$HDPath/VirtualMachines" "$YEARMONTH" "/run/media/bruno/Multimedia/Virtual Machines" || echo "" # Show result -echo -e "\e[97m`date +%r` - Backup finished. Please, verify your log files.\e[39m" +echo -e "${green}`date +%r` - Backup finished. Please, verify your log files.\e[39m" echo "$ActiveDisk" > .lastDisk