TAR_OPTS should now work fine: used noglob shell option where appropriate to
prevent it from being expanded by bash before it's given to tar
intrigeri
18 years ago
239 | 239 | # This will save an archive of the watched directory with the given prefix |
240 | 240 | save_files() { |
241 | 241 | debug " - save_files $@" |
242 | set -o noglob | |
242 | 243 | tar jcf "$BACKUP_DIR/$1-$DATE".tar.bz2 \ |
243 | -C "$WATCHED_PARENT" $TAR_OPTS `basename "$WATCHED_DIR"` | |
244 | -C "$WATCHED_PARENT" $TAR_OPTS `basename "$WATCHED_DIR"` | |
245 | set +o noglob | |
244 | 246 | ln -sf "$1-$DATE".tar.bz2 "$BACKUP_DIR/$1"-latest.tar.bz2 |
245 | 247 | } |
246 | 248 | |
318 | 320 | echo "$FILES_HEADER" >> "$tmp" |
319 | 321 | |
320 | 322 | # Find differences with tar |
323 | set -o noglob | |
321 | 324 | tar_diff=$(tar jdf "$BACKUP_DIR/$1".tar.bz2 \ |
322 | 325 | -C "$WATCHED_PARENT" $TAR_OPTS 2>&1 | |
323 | 326 | # transform: |
330 | 333 | # Only in test/etc: issue -> test/etc/issue |
331 | 334 | sed -n -e "s,^Only in $WATCHED_PARENT\([^:]*\): \(.*\),\1/\2,p") |
332 | 335 | files="`echo "$tar_diff$diff_diff" | sort -u`" |
336 | set +o noglob | |
333 | 337 | if [ -z "$files" ]; then |
334 | 338 | echo "$_NO_CHANGE" >> "$tmp" |
335 | 339 | else |
366 | 370 | echo "$FILES_DETAILS_HEADER" >> "$tmp" |
367 | 371 | |
368 | 372 | # Just diff it! |
369 | if (LC_ALL=$LOCALE diff -urBN $TAR_OPTS \ | |
373 | set -o noglob | |
374 | if (LC_ALL=$LOCALE diff -urBN $TAR_ObPTS \ | |
370 | 375 | --minimal "$tmpdir"/`basename "$WATCHED_DIR"` \ |
371 | 376 | "$WATCHED_DIR" 2>/dev/null); then |
372 | 377 | echo "$_NO_CHANGE" |
373 | 378 | fi | grep -v '^--- \|diff ' | |
374 | 379 | sed -e "s;^+++ $WATCHED_PARENT\([^ ]*\) .*;+++ \1;" \ |
375 | 380 | >> "$tmp" |
381 | set +o noglob | |
376 | 382 | fi |
377 | 383 | |
378 | 384 | # Put on standard output |