diff --git a/src/scripts/backup_nocloud.sh b/src/scripts/backup_nocloud.sh
index bccab5679ba177f06daa6934d2cd60b128f36c54..d4aa8dad3974ebc653ec558f781d5a1cd34db36b 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 /tmp/serveur.tgz $srv_directories
@@ -113,6 +118,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"
@@ -160,6 +178,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)"
@@ -186,6 +206,7 @@ mysql=false
 postgres=false
 encfs=false
 archive=false
+clone=false
 MIN_SIZE=$((1024*1024))
 warn_only=false
 post_cmd=""
@@ -195,7 +216,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)
@@ -248,6 +269,11 @@ while getopts "$optspec" optchar; do
         P)
             post_cmd="$OPTARG"
             ;;
+        C)
+            clone=true
+            EXCLUDEFROMCLONE="$OPTARG"
+            ACTIONS="\nsauvegarde_clone"
+            ;;
         *)
             echo "Option inconnue -$optchar"
             usage
@@ -293,7 +319,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"
 
diff --git a/src/tetras-back b/src/tetras-back
index 72b69766d0297568158f12c7ed38f5a5daa8db9e..aed5416a1eb8d540bfeedf567327b75a7eb2d9e5 100755
--- a/src/tetras-back
+++ b/src/tetras-back
@@ -30,6 +30,7 @@ use Data::Dumper;
 use Cpanel::JSON::XS qw(encode_json);
 use Log::Dispatch;
 use Getopt::ArgParse;
+use Try::Tiny;
 
 my $Logger;
 my %running_backups;