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;