all repos — kyanite @ 178fec87b21bb5bf356c38ec4aa2b34cd960277d

streamlined, composable rsync wrapper for organized incremental backups of local or remote data

add --name option and fix hostname part on lastFullBackup
Iris Lightshard nilix@nilfm.cc
PGP Signature
-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQT/foVVmI9pK13hPWFohAcXSWbK8wUCZgOcOwAKCRBohAcXSWbK
88GzAP9S+aRN2lIjV8IL5YIayNxHvlropgDe04hQ3CRS/2qgmQEAyERmasNFQ/6n
lKhKjZwX9UOizad9RZSKmnAXg4qH3QI=
=jqh0
-----END PGP SIGNATURE-----
commit

178fec87b21bb5bf356c38ec4aa2b34cd960277d

parent

107851b42d0f377b3e6d21f4bdda7ea7e3494fa8

1 files changed, 17 insertions(+), 3 deletions(-)

jump to
M kyanite.shkyanite.sh

@@ -2,12 +2,15 @@ #!/bin/sh

helpme() { echo "usage:" - echo " $0 full|partial|restore SRC DEST [options]" + echo " $0 full|partial|restore [--name NAME] SRC DEST [options]" echo " COMMANDS:" echo " full: Make a full backup of SRC to DEST/HOST/TIMESTAMP_full/" echo " partial: Make partial backup of SRC to DEST/HOST/TIMESTAMP_part/" echo " relative to the latest full backup in that directory" echo " restore: Restore the backup at DEST/ to SRC/" + echo " NAME:" + echo " Force main subdir inside DEST instead of hostname." + echo " Useful if backing up, eg, external media." echo " SRC:" echo " Relative or absolute path for the source to backup or restore from." echo " When backing up, can be a remote path in the form of user@host:path;"

@@ -37,6 +40,12 @@ else mode=none;

fi shift; +if [ "$1" = "--name" ]; then + shift + forcedName=$1; + shift; +fi + srcDir=$1; shift;

@@ -45,8 +54,13 @@ remoteHost=$(echo $srcDir | awk -F : '{ print $1 }' | awk -F @ '{ print $2 }');

if [ ! -z "${remoteHost}" ]; then host=${remoteHost}; -else host=$(hostname) +else host=$(hostname); fi + +if [ ! -z "${forcedName}" ]; then + host=${forcedName}; +fi + shift; case $mode in

@@ -57,7 +71,7 @@ rsync -av $@ ${srcDir} ${fullDest};

;; part) fullDest=${destDir}/${host}/$(date +%Y-%m-%d_%H:%M)_part; - lastFullBackup=$(ls -1d ${destDir}/$(hostname)/*_full | tail -n 1); + lastFullBackup=$(ls -1d ${destDir}/${host}/*_full | tail -n 1); mkdir -p ${fullDest}; rsync -av --link-dest=${lastFullBackup} $@ ${srcDir} ${fullDest}; ;;