X-Git-Url: https://git.sesse.net/?p=backup.sh;a=blobdiff_plain;f=backup.sh;fp=backup.sh;h=e64312f529f68b3021a2751c2c75ef186092f85a;hp=dfe8d45564859a4cc317814404d78e8cd44c00a3;hb=875b0af73ff25c6f85097b05820ae9f0c0894486;hpb=8dde456890eb37f4efdc7e47fb80a6c191ef4d02 diff --git a/backup.sh b/backup.sh index dfe8d45..e64312f 100755 --- a/backup.sh +++ b/backup.sh @@ -117,6 +117,13 @@ backup() # a GPG command line. storageprogram=$( findconf storageprogram $computer $sfilesystem ) + # Find compressor and decompressor for this filesystem. + fscompressor=$( findconf compressor $computer $filesystem ) + if [ -z "$fscompressor" ]; then + fscompressor=$compressor + fi + decompressor=$( findconf decompressor $computer $filesystem ) + # We try to run tar on the remote computer # c create archive # C change to directory first @@ -128,8 +135,8 @@ backup() # Pipe the stuff over ssh to ourselves, run pee to cat the contents to a # file and build a file list, respectivly. TARFILE=$DATE.tmp - TARCMD="ssh -n $username@$computer \"$nice tar --one-file-system --use-compress-program $compressor -cf - -C $filesystem . $lastcmd \ - --exclude-from=$remotehome/.backup/exclude\" | pee \"$storageprogram > $TARFILE\" \"tar tzvf -\"" + TARCMD="ssh -n $username@$computer \"$nice tar --one-file-system --use-compress-program $fscompressor -cf - -C $filesystem . $lastcmd \ + --exclude-from=$remotehome/.backup/exclude\" | pee \"$storageprogram > $TARFILE\" \"$decompressor | tar tvf -\"" infomsg "Running $TARCMD" eval $TARCMD > $DATE.idx @@ -236,12 +243,15 @@ if [ -z "$remotehome" ]; then diemsg "Could not expand ~ for user $username" fi -# Check if pigz is available -if ssh -n $username@$computer "pigz -V 2>/dev/null"; then - compressor=pigz -else - infomsg "pigz missing; falling back to gzip." - compressor=gzip +# Check if pigz is available. Note that this may be overridden per-filesystem later. +compressor=$( findconf compressor $computer ) +if [ -z "$compressor" ]; then + if ssh -n $username@$computer "pigz -V 2>/dev/null"; then + compressor=pigz + else + infomsg "pigz missing; falling back to gzip." + compressor=gzip + fi fi # Check if nice and ionice are available