]> git.llucax.com Git - software/bacap.git/blobdiff - bacap
Let rsync do the hard linking
[software/bacap.git] / bacap
diff --git a/bacap b/bacap
index f72b6fd3c29bec54a3f8337616fd28d08daaa8f6..8c649ed099fe4d0df4aea98e2edd2ce420c8546a 100755 (executable)
--- a/bacap
+++ b/bacap
@@ -12,6 +12,9 @@ DEBUG=0
 # Don't actually do anything, just print the commands
 DRY_RUN=0
 
+# Force synchronization, even when the target already exist
+FORCE_SYNC=0
+
 # Log file (if empty, print to stdout/err)
 LOG_FILE=
 
@@ -116,7 +119,7 @@ do
        plog "Destination: $dst"
        plog "Last:        $current_dir"
        plog
-       [ -d "$dst" ] &&
+       [ -d "$dst" ] && [ "$FORCE_SYNC" -ne 1 ] &&
                perror "$dst already exists, skipping..." &&
                continue
        [ "$PING_CHECK" -eq 1 ] && ! ping_host $host &&
@@ -126,11 +129,9 @@ do
                extra_flags="--exclude-from=$exclude --delete-excluded"
        [ -r "$include" ] &&
                extra_flags="$extra_flags --include-from=$include"
-       plog "Rotating backup..."
-       $run cp -al $V "$current_dir" "$dst" ||
-               ret=$(($ret+1))
        plog "Running rsync..."
-       $run rsync $RSYNC_FLAGS $extra_flags $src "$dst/" ||
+       $run rsync $RSYNC_FLAGS $extra_flags \
+                               --link-dest="$current_dir" $src "$dst/" ||
                ret=$(($ret+1))
        plog "Moving current..."
        $run rm $V "$current_link" ||