diff --git a/backup-tar/backup.sh b/backup-tar/backup.sh index 9e1260f85d7acd90a85d4b7537302c36d9085f01..42e1773ab3589cde5c3c9de799386ef75d38cd4d 100755 --- a/backup-tar/backup.sh +++ b/backup-tar/backup.sh @@ -56,7 +56,11 @@ for SRC in $SOURCES; do INCFILE=${SRC_ID}/${TIMESTAMP}.${TYPE}.snar INCFILE_TMP=${INCFILE}.tmp - [[ -f $INCFILE_TMP ]] && fail "ERROR: backup already in progress (incremental backup file exists)" + [[ -f $INCFILE_TMP ]] && fail "ERROR: backup $SRC already in progress (temporary incremental backup file exists)" + if [[ -f $INCFILE ]]; then + echo "WARNING: backup $SRC already done (incremental backup file exists)" >&2 + continue + fi INC_FILTER="." if [[ "$TYPE" = "weekly" ]]; then @@ -71,9 +75,16 @@ for SRC in $SOURCES; do fi ssh $TARGET "mkdir -p stamps/${SRC_ID} ${SRC_ID}" - echo "Backup $SRC ($TYPE)…" - tar --create --xattrs --acls --listed-incremental=$INCFILE_TMP $SRC | \ - xz -T$COMPRESS_THRS -3 | ssh $TARGET "umask 0027; cat > $BACKUP_FILE" + [[ "$TYPE" != "daily" ]] && echo "Backup $SRC ($TYPE)…" + { + { + tar --create --xattrs --acls --listed-incremental=$INCFILE_TMP $SRC | \ + xz -T$COMPRESS_THRS -3 | \ + ssh $TARGET "umask 0027; cat > $BACKUP_FILE" + } 3>&1 1>&2 2>&3 | \ + { grep -v "Removing leading \`/'" || true; } | \ + { grep -v "socket ignored" || true; } + } 3>&1 1>&2 2>&3 xz -T$COMPRESS_THRS --keep --stdout $INCFILE_TMP | ssh $TARGET "umask 0027; cat > $INCFILE_TGT" if echo $SRC | grep -q '^/home'; then USR=$(echo $SRC | sed 's|^/home/\([^/]*\).*$|\1|')