Hi,
Forget the explanation i gave in my previous mail, it was wrong. The
real problem lies in shell variables and function recursivity: in
clean_directory() $list is not declared as local, so when you have a
subdirectory and call clean_directory() on it, $list is modified.
The following patch fixes this for me but is probably specific to bash.
--- files.sh.orig^I2006-08-04 14:04:19.0 +0200
+++ files.sh.local^I2006-08-31 09:34:41.0 +0200
@@ -326,7 +326,7 @@
fi
# First list all the files to process
-list=$(mktemp /tmp/bm-list.XX)
+local list=$(mktemp /tmp/bm-list.XX)
for file in $directory/*
do
if [ ! -e $file ]; then
On the other hand, is there a good reason to implement clean_directory()
as recursive instead of just using find ? backup-manager-purge seems to
accept full paths so something like this might be better (untested):
clean_directory()
{
directory=$1
purge_date=$(date +%Y%m%d --date $BM_ARCHIVE_TTL days ago)
#__debug Purging archives older than $purge_date
if [ ! -d $directory ]; then
error Directory given is not found.
fi
# First list all the files to process
list=$(mktemp /tmp/bm-list.XX)
find -H $directory -type f -print $list
# Then ask bakup-manager-purge what to remove
for archive in `/usr/bin/backup-manager-purge --ttl=$BM_ARCHIVE_TTL $list`
do
info Removing archive \\$archive\.
rm -f $archive
done
rm -f $list
}
Or even:
clean_directory()
{
directory=$1
purge_date=$(date +%Y%m%d --date $BM_ARCHIVE_TTL days ago)
#__debug Purging archives older than $purge_date
if [ ! -d $directory ]; then
error Directory given is not found.
fi
# First list all the files to process
# and ask bakup-manager-purge what to remove
list=$(mktemp /tmp/bm-list.XX)
find -H $directory -type f -print \
| /usr/bin/backup-manager-purge --ttl=$BM_ARCHIVE_TTL $list
for archive in `cat $list`
do
info Removing archive \\$archive\.
rm -f $archive
done
rm -f $list
}
Or even:
clean_directory()
{
directory=$1
purge_date=$(date +%Y%m%d --date $BM_ARCHIVE_TTL days ago)
#__debug Purging archives older than $purge_date
if [ ! -d $directory ]; then
error Directory given is not found.
fi
for archive in ` find -H $directory -type f -print \
| /usr/bin/backup-manager-purge --ttl=$BM_ARCHIVE_TTL \
| xargs rm -v -- `
do
info \$archive
done
}
Of course all this might be perfectly wrong, because I didn't have my coffee
yet ;)
--
Thomas Parmelan
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]