On 2009-06-13 13:08 +0200, Alexey Salmin wrote:
> Package: backup-manager
> Version: 0.7.8-1
> Severity: normal
> Tags: patch
>
> Hello! I'm using backup manager with BM_TARBALL_FILETYPE="tar.gz".
> File changes during the backup are recognized as errors despite the
> fact that tar return code is "1". This is caused by the bug in
> backup-methods.sh: BM__CURRENT_COMMAND variable isn't set properly.
> I've made a small patch. I'm not sure how to fix that correctly but
> I've tried :) May be it's a good idea to set BM__CURRENT_COMMAND
> variable in function __get_backup_tarball_command() but it still
> will not work for encrypted archives.
Anyway, your patch seems to work for unencrypted archives at least, so
I'm going to apply it for the next Debian version.
> Actually the way backup-manager executes commands doesn't allow to
> treat this situation properly: error codes are lost in pipelines.
True; we could try to "set -o pipefail" to alleviate that, but then
there is the problem of distinguishing between tar exiting with return
code 1 which is non-fatal, and the compressor exiting with the same
return code which generally _will_ be fatal.
> May be it's better to pass date through FIFO's and get the error
> codes separately?
Maybe that is an idea. Alexis?
For the reference, here is the patch against current SVN in unified
format:
Index: lib/backup-methods.sh
===================================================================
--- lib/backup-methods.sh (revision 592)
+++ lib/backup-methods.sh (working copy)
@@ -629,7 +629,12 @@
# the common commandline
*)
- BM__CURRENT_COMMAND="generic"
+ # tar, tar.gz, tar.bz2, tar.whatever
+ if [[ "${BM_TARBALL_FILETYPE:0:3}" == "tar" ]] ; then
+ BM__CURRENT_COMMAND="tar"
+ else
+ BM__CURRENT_COMMAND="generic"
+ fi
debug "$command $file_to_create \"$target\" > $logfile 2>&1"
tail_logfile "$logfile"
debug "$command $file_to_create \"$target\""