diff --git a/src/scripts/backup_nocloud.sh b/src/scripts/backup_nocloud.sh
index bcc607e99467f76ae8353d3c2a058134f104d8f1..0ce9e069ebdfd15eae4e85c7b37c6d302088f0b2 100755
--- a/src/scripts/backup_nocloud.sh
+++ b/src/scripts/backup_nocloud.sh
@@ -54,7 +54,7 @@ do_log(){
     echo "Sauvegarde NoCloud - $@"
 }
 
-sauvegarde_serveur(){
+dump_databases(){
     if $mysql
     then
         do_log "Sauvegarde mysql"
@@ -82,6 +82,11 @@ sauvegarde_serveur(){
             do_log "Dossier de sauvegarde gitlab non trouvé, pensez à supprimer manuellement les anciennes sauvegardes"
         fi
     fi
+
+}
+
+sauvegarde_serveur(){
+    dump_databases
     do_log "Creation de l'archive configuration serveur"
     [ ! -z "$SERVICES" ] && systemctl stop $SERVICES
     tar czf$vopt $dest/serveur.tgz $srv_directories
@@ -106,6 +111,19 @@ sauvegarde_donnees(){
     fi
 }
 
+sauvegarde_clone(){
+    dump_databases
+    cmd="rsync -aAX /"
+    EXCLUDE='/dev,/proc,/var/run,/var/cache,/var/backups,/var/lock,/sys,/tmp,/run,/mnt,/media,/lost+found"'
+    for filtre in $(echo "$EXCLUDE,$EXCLUDEFROMCLONE" | sed 's/,/ /g')
+    do
+        cmd="$cmd --exclude=$filtre"
+    done
+    cmd="$cmd $dest"
+    do_log "Running : '$cmd'"
+    $cmd
+}
+
 sauvegarde_seafile(){
     # On sauvegarde le contenu des bibliothèques
     echo "Sauvegarde - Contenu Seafile"
@@ -153,6 +171,8 @@ usage(){
     echo "  -p | --postgresql       Sauvegarde postgresql (implique --config)"
     echo "  -m | --mysql            Sauvegarde mysql (implique --config)"
     echo "  -c | --config           Sauvegarde le serveur ($srv_directories)"
+    echo "  -C | --Clone    exclude Effectue un clone rsync, exclude est une liste
+                                    de dossier a exclure separe par des ','"
     echo "  -g | --gitlab           Sauvegarde gitlab (implique --config)"
     echo "  -u | --unifi            Sauvegarde unifi (/var/lib/unifi, implique
                                     --config)"
@@ -180,6 +200,7 @@ mysql=false
 postgres=false
 encfs=false
 archive=false
+clone=false
 MIN_SIZE=$((1024*1024))
 warn_only=false
 post_cmd=""
@@ -189,7 +210,7 @@ for arg in "$@"; do
   shift
   set -- "$@" `echo $arg | sed 's/^-\(-.\).*$/\1/'`
 done
-optspec=":hvdcguws:mpe:i:aP:"
+optspec=":hvC:dcguws:mpe:i:aP:"
 while getopts "$optspec" optchar; do
     case "${optchar}" in
         h)
@@ -242,6 +263,11 @@ while getopts "$optspec" optchar; do
         P)
             post_cmd="$OPTARG"
             ;;
+        C)
+            clone=true
+            EXCLUDEFROMCLONE="$OPTARG"
+            ACTIONS="\nsauvegarde_clone"
+            ;;
         *)
             echo "Option inconnue -$optchar"
             usage
@@ -286,7 +312,10 @@ then
 fi
 
 parent_dir=$dest
-dest="$parent_dir/$date$postfix"
+if ! $clone
+then
+    dest="$parent_dir/$date$postfix"
+fi
 mkdir "$dest"
 [ ! -d "$dest" ] && liberer_espace mkdir "$dest"