On 02/04/2010 11:11 PM, Dotan Cohen wrote:
On 4 February 2010 22:59, Meir Kriheli<[email protected]>  wrote:
On 02/04/2010 09:12 PM, Dotan Cohen wrote:

I hope there is a bash guru out there today. I need to script a backup
plan which has a list of directories that should not be backed up.
Some of these directories have spaces in their filenames. The
following script works so long as there are no directories with spaces
in DONT_COPY, however, I cannot figure out what to do to get it to
work _with_ spaces in filenames:

#!/bin/bash

DONT_COPY="
.adobe/
File with Spaces
.bin/google-earth
Yet Another Annoying Filename
"

DONT_COPY_LIST=""
for pattern in $DONT_COPY ; do DONT_COPY_LIST="$DONT_COPY_LIST
--exclude=$pattern "; done
tar -zcvf - * $DONT_COPY_LIST


Any ideas? Thanks!


Set IFS to newlines only:

IFS=$'\n'

BTW, why don't you use -X or --exclude-from ? From man:

       -X, --exclude-from=FILE
              exclude files matching patterns listed in FILE


Thanks, Meir, I just got this to work:

EXCLUDES=`tempfile`
cat>$EXCLUDES<<EOLIST
$DONT_COPY
EOLIST

tar -zcvf - *  --exclude-from $EXCLUDES>  out.tar

rm -f $EXCLUDES



By the way, because of the "v" flag, tar outputs all the directories
that it copies to the terminal (even though this is running in a
script). How can I capture that output to a variable or to another
temp file?



You can use the tee command for that.

Cheers
--
Meir

_______________________________________________
Linux-il mailing list
[email protected]
http://mailman.cs.huji.ac.il/mailman/listinfo/linux-il

Reply via email to