]> arthur.barton.de Git - backup-script.git/blobdiff - bin/backup-script
Introduce Initialize_Last_SysTarget_Snapshot() function
[backup-script.git] / bin / backup-script
index 457a5e7be4a1bdbbc47702be179894da77ef0b03..8da13700f2c790a323f4e5558588da531a6ae8ce 100755 (executable)
@@ -182,6 +182,33 @@ DeleteSubvolume() {
        return 0
 }
 
+Initialize_Last_SysTarget_Snapshot() {
+       sys_target="$1"
+       unset last
+       unset snapshot
+
+       fs=$(GetFS "$sys_target")
+       case "$fs" in
+         "btrfs")
+               # Search directory of last generation, if any
+               last=$(ls -1d "$sys_target"/[0-9]* 2>/dev/null | sort -r | head -n1)
+               if [ -n "$last" ]; then
+                       if [ ! -d "$last" ]; then
+                               echo "Last snapshot \"$last\" seems not to be a directory!? \"$system\" skipped!"
+                               echo
+                               return 1
+                       fi
+               fi
+               sys_target="$sys_target/$(date +%Y%m%d-%H%M%S)"
+               snapshot="$sys_target"
+               ;;
+         *)
+               echo "Initialize_Last_SysTarget_Snapshot: Incompatible FS type \"$fs\" on \"$sys_target\"!"
+               return 1
+       esac
+       return 0
+}
+
 while [ $# -gt 0 ]; do
        case "$1" in
          "-n"|"--dry-run")
@@ -277,9 +304,33 @@ for f in $sys; do
        job_pre_exec="$default_job_pre_exec"
        job_post_exec="$default_job_post_exec"
 
+       # Compatibility with backup-pull(1) script: Save global values ...
+       pre_exec_saved="$pre_exec"
+       post_exec_saved="$post_exec"
+
+       # Compatibility with backup-pull(1) script: Set defaults
+       unset host
+       unset source
+       unset pre_exec
+       unset post_exec
+
        # Read in system configuration file
        source "$f"
 
+       # Compatibility with backup-pull(1) script: Fix up configuration
+       [ "$system" = "$fname" -a -n "$host" ] \
+               && system="$host"
+       [ "$source_root" = "$default_source_root" -a -n "$source" ] \
+               && source_root="$source"
+       [ -z "$job_pre_exec" -a -n "$pre_exec" ] \
+               && job_pre_exec="$pre_exec"
+       [ -z "$job_post_exec" -a -n "$post_exec" ] \
+               && job_post_exec="$post_exec"
+
+       # Compatibility with backup-pull(1) script: Restore global values ...
+       pre_exec="$pre_exec_saved"
+       post_exec="$post_exec_saved"
+
        # Validate configuration
        [ "$system" = "localhost" -o "$system" = "127.0.0.1" ] && local=1
 
@@ -331,16 +382,7 @@ for f in $sys; do
                        echo; continue
                fi
 
-               # Search directory of last generation, if any
-               last=$(ls -1d "$sys_target"/[0-9]* 2>/dev/null | sort -r | head -n1)
-               if [ -n "$last" ]; then
-                       if [ ! -d "$last" ]; then
-                               echo "Last snapshot \"$last\" seems not to be a directory!? \"$system\" skipped!"
-                               echo; continue
-                       fi
-               fi
-               sys_target="$sys_target/$(date +%Y%m%d-%H%M%S)"
-               snapshot="$sys_target"
+               Initialize_Last_SysTarget_Snapshot "$sys_target" || continue
 
                if [ -n "$last" -a ! -e "$last/.stamp" ]; then
                        # Old backup directory without "stamp file", continue