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"