tools - Easier incremental backups for hammer-backup.sh.
authorAntonio Huete Jimenez <tuxillo@quantumachine.net>
Sun, 9 Mar 2014 16:24:36 +0000 (17:24 +0100)
committerAntonio Huete Jimenez <tuxillo@quantumachine.net>
Sun, 9 Mar 2014 20:44:46 +0000 (21:44 +0100)
- If 'auto' is specified with option -i, then the latest full backup will
  be used. This allows easier backups via crontab for example.
- Fix a couple things in README.

tools/tools/hammer-backup/README
tools/tools/hammer-backup/hammer-backup.sh

index c03ac8b..e90642d 100644 (file)
@@ -35,15 +35,17 @@ Example:
 
 General usage.
 
-Usage: hammer-backup [-h] [-v] [-i <full-backup-file>] [-f] [-c <compress-rate>] -d [<backup-dir>] <path-to-PFS>
+Usage: hammer-backup.sh [-h] [-l] [-v] [-i <full-backup-file>] [-f] [-c <compress-rate>] -d [<backup-dir>] <path-to-PFS>
 
  -h: Help outputo above.
  -v: Verbose
  -i <full-backup-file>: Incremental backup. Needs the full backup metadata file.
-                        Relative path to -d
+                        Relative path to -d. You can specify 'auto' and the
+                        script should determine what's the latest full backup.
  -f: Full backup
  -c: Compress rate for xz(1)
  -d: Backup directory
+ -l: List backups from backup directory.
  <path-to-PFS>: PFS path to backup
 
 2.1 Performing a full backup
@@ -61,7 +63,7 @@ NOTE: -v is optional. Also note /pfs/var is found in standard installations.
 
 2.2 Perform an incremental backup over a full one
 
-First list the backups avail:
+First list the backups available:
 
 # ./hammer-backup -l -d /root/backups
 20140308001146_pfs_var.xz.bkp:
index 8d8ef83..520fad1 100755 (executable)
@@ -70,7 +70,7 @@
 
 initialization()
 {
-    VERSION="0.1-beta"
+    VERSION="0.2"
     SCRIPTNAME=${0##*/}
 
     dryrun=0     # Dry-run
@@ -84,8 +84,9 @@ initialization()
     compress=0   # Compress output file?
     comp_rate=6          # Compression rate
     verbose=0    # Verbosity on/off
+    list_opt=0   # List backups
+    find_last=0          # Find last full backup
     timestamp=$(date +'%Y%m%d%H%M%S')
-    list_opt=0
 }
 
 info()
@@ -252,6 +253,19 @@ incr_backup()
     local line=""
     local srcuuid=""
     local tgtuuid=""
+    local latest=""
+    local pattern=""
+
+    # XXX
+    # Find latest metadata backup file if needed.
+    # Right now the timestamp in the filename will
+    # let them be sorted by ls. But this could actually
+    # change
+    if [ ${find_last} -eq 1 ]; then
+       pattern=$(echo ${pfs_path} | tr "/" "_").xz.bkp
+       latest=$(ls -1 ${backup_dir}/*${pattern} | tail -1)
+       incr_full_file=${latest}
+    fi
 
     # Make sure the file exists and it can be read
     if [ ! -r ${incr_full_file} ]; then
@@ -361,7 +375,11 @@ do
 
            info "Incremental backup."
            backup_type=2
-           incr_full_file=$OPTARG
+           if [ "${OPTARG}" == "auto" ]; then
+               find_last=1
+           else
+               incr_full_file=$OPTARG
+           fi
            ;;
        c)
            compress=1