diff --git a/btrbk.sh b/btrbk.sh index 5f1451d..5f7788e 100755 --- a/btrbk.sh +++ b/btrbk.sh @@ -1,40 +1,56 @@ #!/bin/bash source config.sh -set -euo pipefail function main { date=$(date +%Y-%m-%d) month=$(date +%B) - for i in ${!SUBVOLS[@]} - do - snapName=${VOLNAME[$i]}.$date - snapYest=$SNAPDIR${VOLNAME[$i]}.$(date -d "$date -1 day" +%Y-%m-%d) + for i in ${!SUBVOLS[@]}; do + snapName=${VOLNAME[$i]}.$date + snapYest=$SNAPDIR${VOLNAME[$i]}.$(date -d "$date -1 day" +%Y-%m-%d) + if [[ -d "$SNAPDIR$snapName" ]]; then + echo "backup already run today" + continue + else btrfs subvolume snapshot -r ${SUBVOLS[$i]} $SNAPDIR$snapName - if [[ -d "$snapYest" && $bkType = "daily" && $? -ne 0 ]] - then - btrfs send -p $snapYest $SNAPDIR$snapName | gpg --batch -er $PUBKEY -o - | rclone rcat $RCLONEDIR$month/$snapName.pgp - else - btrfs send $SNAPDIR$snapName | gpg --batch -er $PUBKEY -o - | rclone rcat $RCLONEDIR$snapName.pgp - fi - if [[ $bktype = monthly ]] - then - for f in `seq 1 2` - do - btrfs subvolume delete $SNAPDIR${VOLNAME[$i]}.$(date -d "$date -$f day" +%Y-%m-%d) - done - rclone delete $RCLONEDIR$(date -d "$month -1 month" +%B)/ - else - btrfs subvolume delete $SNAPDIR${VOLNAME[$i]}.$(date -d "$date -2 day" +%Y-%m-%d) - fi + fi + if [[ -d "$snapYest" && $bkType = "daily" && $? = 0 ]]; then + btrfs send -p $snapYest $SNAPDIR$snapName | gpg --batch -er $PUBKEY -o - | rclone rcat $RCLONEDIR$month/$snapName.pgp + else + btrfs send $SNAPDIR$snapName | gpg --batch -er $PUBKEY -o - | rclone rcat $RCLONEDIR$snapName.pgp + fi + + if [[ $bktype = monthly && "rclone ls $RCLONEDIR$(date -d "$month -1" +B%)" ]]; then + for f in `seq 1 2`; do + btrfs subvolume delete $SNAPDIR${VOLNAME[$i]}.$(date -d "$date -$f day" +%Y-%m-%d) + done + rclone delete $RCLONEDIR$(date -d "$month -1 month" +%B)/ + else + btrfs subvolume delete $SNAPDIR${VOLNAME[$i]}.$(date -d "$date -2 day" +%Y-%m-%d) + fi done } -if [ `date +%d` != "01" ] - then +rclone ls $RCLONEDIR > /dev/null 2>&1 +if [[ $? = 0 ]]; then + gpg --list-key $PUBKEY > /dev/null 2>&1 + if [[ $? = 0 ]]; then + testDate + else + echo "pubkey wrong or not found exit code: $?" + exit + fi +else + echo "rclone dir wrong or not found exit code: $?" + exit +fi + +function testDate { + if [ `date +%d` != "01" ]; then bkType=daily main else bkType=monthly main -fi + fi +}