aboutsummaryrefslogtreecommitdiff
path: root/handlers
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2006-10-07 00:40:58 +0000
committerintrigeri <intrigeri@boum.org>2006-10-07 00:40:58 +0000
commitd395ae94a5657afcc878adcd851d8e8c53df98de (patch)
tree0af29159f8dfe2e0aa3b5f9a169884331c014777 /handlers
parent947309699dfca7a5db6d8148d46627d502a98d42 (diff)
downloadbackupninja-d395ae94a5657afcc878adcd851d8e8c53df98de.tar.gz
backupninja-d395ae94a5657afcc878adcd851d8e8c53df98de.tar.bz2
dup, rdiff: implemented and documented simpler and clearer symlinks/globbing
behaviour, as proposed on http://lists.riseup.net/www/arc/backupninja/2006-07/msg00008.html
Diffstat (limited to 'handlers')
-rw-r--r--handlers/dup22
-rw-r--r--handlers/dup.helper20
-rw-r--r--handlers/rdiff16
-rw-r--r--handlers/rdiff.helper20
4 files changed, 39 insertions, 39 deletions
diff --git a/handlers/dup b/handlers/dup
index b4a7c9d..15d1a02 100644
--- a/handlers/dup
+++ b/handlers/dup
@@ -134,24 +134,14 @@ symlinks_warning="Maybe you have mixed symlinks and '*' in this statement, which
# excludes
for i in $exclude; do
str="${i//__star__/*}"
- str=`readlink -f $str`
- if [ -n "$str" ]; then
- execstr="${execstr}--exclude '$str' "
- else
- warning "exclude statement '${i//__star__/*}' will be ignored. $symlinks_warning"
- fi
+ execstr="${execstr}--exclude '$str' "
done
# includes
for i in $include; do
[ "$i" != "/" ] || fatal "Sorry, you cannot use 'include = /'"
str="${i//__star__/*}"
- str=`readlink -f $str`
- if [ -n "$str" ]; then
- execstr="${execstr}--include '$str' "
- else
- warning "include statement '${i//__star__/*}' will be ignored. $symlinks_warning"
- fi
+ execstr="${execstr}--include '$str' "
done
# vsincludes
@@ -159,12 +149,8 @@ if [ $usevserver = yes ]; then
for vserver in $vsnames; do
for vi in $vsinclude; do
str="${vi//__star__/*}"
- str=`readlink -f $VROOTDIR/$vserver$str`
- if [ -n "$str" ]; then
- execstr="${execstr}--include '$str' "
- else
- warning "vsinclude statement '${vi//__star__/*}' will be ignored for VServer $vserver. $symlinks_warning"
- fi
+ str="$VROOTDIR/$vserver$str"
+ execstr="${execstr}--include '$str' "
done
done
fi
diff --git a/handlers/dup.helper b/handlers/dup.helper
index dbf9643..da299c6 100644
--- a/handlers/dup.helper
+++ b/handlers/dup.helper
@@ -199,6 +199,8 @@ do_dup_gpg() {
if [ "$dup_gpg_sign" == yes ]; then
do_dup_gpg_signkey ; [ $? = 0 ] || return 1
fi
+ else
+ dup_gpg_sign=no
fi
# a passphrase is alway needed
@@ -310,9 +312,21 @@ password = $dup_gpg_password
[source]
-# WARNING: include, exclude and vsinclude statements support EITHER globbing
-# with '*' OR symlinks in the path; usage of both in the same statement is *not*
-# supported and will lead to weird behaviour.
+# A few notes about includes and excludes:
+# 1. include, exclude and vsinclude statements support globbing with '*'
+# 2. Symlinks are not dereferenced. Moreover, an include line whose path
+# contains, at any level, a symlink to a directory, will only have the
+# symlink backed-up, not the target directory's content. Yes, you have to
+# dereference yourself the symlinks, or to use 'mount --bind' instead.
+# Example: let's say /home is a symlink to /mnt/crypt/home ; the following
+# line will only backup a "/home" symlink ; neither /home/user nor
+# /home/user/Mail will be backed-up :
+# include = /home/user/Mail
+# A workaround is to 'mount --bind /mnt/crypt/home /home' ; another one is to
+# write :
+# include = /mnt/crypt/home/user/Mail
+# 3. All the excludes come after all the includes. The order is not otherwise
+# taken into account.
# files to include in the backup
EOF
diff --git a/handlers/rdiff b/handlers/rdiff
index 79577c6..bdc1cbd 100644
--- a/handlers/rdiff
+++ b/handlers/rdiff
@@ -179,23 +179,13 @@ symlinks_warning="Maybe you have mixed symlinks and '*' in this statement, which
# excludes
for i in $exclude; do
str="${i//__star__/*}"
- str=`readlink -f $str`
- if [ -n "$str" ]; then
- execstr="${execstr}--exclude '$str' "
- else
- warning "exclude statement '${i//__star__/*}' will be ignored. $symlinks_warning"
- fi
+ execstr="${execstr}--exclude '$str' "
done
# includes
for i in $include; do
[ "$i" != "/" ] || fatal "Sorry, you cannot use 'include = /'"
str="${i//__star__/*}"
- str=`readlink -f $str`
- if [ -n "$str" ]; then
- execstr="${execstr}--include '$str' "
- else
- warning "include statement '${i//__star__/*}' will be ignored. $symlinks_warning"
- fi
+ execstr="${execstr}--include '$str' "
done
# vsinclude
@@ -203,7 +193,7 @@ if [ $usevserver = yes ]; then
for vserver in $vsnames; do
for vi in $vsinclude; do
str="${vi//__star__/*}"
- str=`readlink -f $VROOTDIR/$vserver$str`
+ str="$VROOTDIR/$vserver$str"
if [ -n "$str" ]; then
execstr="${execstr}--include '$str' "
else
diff --git a/handlers/rdiff.helper b/handlers/rdiff.helper
index 904ac98..42bcb1b 100644
--- a/handlers/rdiff.helper
+++ b/handlers/rdiff.helper
@@ -271,12 +271,22 @@ type = local
keep = $rdiff_keep
# A few notes about includes and excludes:
-# - include, exclude and vsinclude statements support EITHER globbing with '*'
-# OR symlinks in the path; usage of both in the same statement is *not*
-# supported and will lead to weird behaviour.
-# - All the excludes come after all the includes. The order is not otherwise
-# taken into account.
+# 1. include, exclude and vsinclude statements support globbing with '*'
+# 2. Symlinks are not dereferenced. Moreover, an include line whose path
+# contains, at any level, a symlink to a directory, will only have the
+# symlink backed-up, not the target directory's content. Yes, you have to
+# dereference yourself the symlinks, or to use 'mount --bind' instead.
+# Example: let's say /home is a symlink to /mnt/crypt/home ; the following
+# line will only backup a "/home" symlink ; neither /home/user nor
+# /home/user/Mail will be backed-up :
+# include = /home/user/Mail
+# A workaround is to 'mount --bind /mnt/crypt/home /home' ; another one is to
+# write :
+# include = /mnt/crypt/home/user/Mail
+# 3. All the excludes come after all the includes. The order is not otherwise
+# taken into account.
+# files to include in the backup
EOF
## includes ##
if [ "$host_or_vservers" == host -o "$host_or_vservers" == both ]; then