diff --git a/backup.sh b/backup.sh
index 3fbbd133f621198cb883334815d896b005b864f4..831e6e386269ff0b0249b27a070db44e556ff3ca 100755
--- a/backup.sh
+++ b/backup.sh
@@ -5,6 +5,12 @@ if [ ! -z "$1" ]; then
    conf_file=$1
    shift
 fi
+if [ -z "$1" ]; then
+    mode="auto"
+else
+    mode="$1"
+fi
+
 source $DIR/inc.sh
 exec &> >(tee -a "$log_file")
 
@@ -13,8 +19,14 @@ exit_on_fail(){
         echo "Done"
 }
 
+
+# Needs to params
+#           code=[0-9]+
+#           mode="auto|full|inc"
 retrie_on_fail(){
-    if [ $1 -ne 0 ]; then
+    code="$1"
+    mode="$2"
+    if [ $code -ne 0 ]; then
         keep=$(($BK_KEEP_FULL-1))
         if [ $keep -gt 0 ]; then
             run_duplicity remove-all-inc-of-but-n-full $keep --force
@@ -25,14 +37,33 @@ retrie_on_fail(){
             glob rm $remotedir/*-new-signatures*
 EOF
         fi
-        backup "cleaned"
+        backup $mode "cleaned"
         leave $?
     fi
 }
 
+
+#
+# Needs to params :
+#       mode = "auto|full|inc"
+#       retries = "cleaned|"
 backup(){
-    retries=$1
+    case $1 in
+        "auto")
+            action="backup"
+            ;;
+        "full")
+            action="full"
+            ;;
+        "inc")
+            action="incremental"
+            ;;
+        "*")
+            echo "Unknowkn backup mode '$1'"
+            exit 1
+    esac
     shift
+    retries=$1
 
     cleanup
     echo "Removing old backups"
@@ -45,7 +76,8 @@ backup(){
     export PASSPHRASE="$encpass"
     export FTP_PASSWORD="$ftppass"
     set -x
-    /usr/bin/duplicity --verbosity $verbosity \
+    /usr/bin/duplicity $action \
+        --verbosity $verbosity \
         --timeout $timeout \
         --full-if-older-than $BK_FULL_FREQ \
         --include ${bckplist// / --include } \
@@ -69,7 +101,7 @@ backup(){
     collection_state
     echo "All Done"
 }
-backup
+backup $mode
 ret=$?
 retrie_on_fail $ret
 leave $ret