diff --git a/Readme.md b/Readme.md index 5c71f353dff523a3359499e52b6888c2a8808348..9d5867a8c06085ecb798b89f2558246bdf8ec6af 100644 --- a/Readme.md +++ b/Readme.md @@ -6,6 +6,9 @@ gitlab de Tetras Libre](https://gitlab.tetras-libre.fr/tetras-libre/Tetras-back) Tetras-back est un logiciel libe, conçu pour sauvegarder des serveurs d'auto hebergements sur des disques dur externes. + +Une [documentation complète](http://documentation.demo-tic.org/service_oel:systeme_de_sauvegardes) est trouvable sur le wiki de nos partenaires. + ## Prérequis Tetras-Back a été testé sur debian Jessie et Testing, pour l'utiliser, vous @@ -64,7 +67,7 @@ L'administrateur est notifié des sauvegardes et des echecs par email. ## Interface Web -L'interface web n'est pas encore implémentée +Voir [la documentation complète](http://documentation.demo-tic.org/service_oel:systeme_de_sauvegardes) ## Scripts de sauvegarde fournis @@ -138,16 +141,16 @@ La device etant quelque chose du genre `/dev/sdb1` ### Todo -+ [ ] Web interface ++ [x] Web interface + [X] Link to actions + [X] Actions + [X] Reverse + scroll for log + [x] htaccess / htpassword - + [ ] vhost apache2 + + [x] vhost apache2 + [X] CSS - + [ ] encodage + + [x] encodage + [ ] Bouton telecharger -+ [ ] Verify reboot systemd ++ [x] Verify reboot systemd + [x] Sendmail after backup or on fail + [x] Daemon + [x] Udev rules diff --git a/src/scripts/backup_nocloud.sh b/src/scripts/backup_nocloud.sh index 05b5b58d05bc199bd99e1bc3c4f1cae27948b3dd..3121311879a777171672193e4f0a93ad776e0504 100755 --- a/src/scripts/backup_nocloud.sh +++ b/src/scripts/backup_nocloud.sh @@ -66,9 +66,27 @@ sauvegarde_serveur(){ # the backup should be in /var/opt/gitlab/backups thus in srv_directories do_log "Creation de la sauvegarde gitlab" /usr/bin/gitlab-rake $voptminus gitlab:backup:create + backup_path=`grep "'backup_path'" /etc/gitlab/gitlab.rb | sed 's/^.*= "\(.*\)"$/\1/'` + if [ -d "$backup_path" ] + then + /bin/ls -dt $backup_path/* | tail -n +11 | xargs rm -rf + else + do_log "Dossier de sauvegarde gitlab non trouvé, pensez à supprimer manuellement les anciennes sauvegardes" + fi fi do_log "Creation de l'archive configuration serveur" + [ ! -z "$SERVICES" ] && systemctl stop $SERVICES tar czf$vopt $dest/serveur.tgz $srv_directories + ret=$? + [ ! -z "$SERVICES" ] && systemctl start $SERVICES + if [ $ret -eq 1 ] + then + # only warn on tar return code 1 + do_log "Attention: des fichiers on été modifié durant la sauvegarde de l'archive serveur" + return 0 + else + return $ret + fi } sauvegarde_donnees(){ @@ -89,7 +107,7 @@ sauvegarde_seafile(){ usage(){ echo "Utilisation $0 [options] device" - echo "Device doit etre un disque non monte" + echo "Device doit etre un disque non monté" echo "Options" echo " -h | --help Affiche cette aide et quitte" echo " -v | --verbose Active le mode verbeux" @@ -98,9 +116,14 @@ usage(){ echo " -m | --mysql Sauvegarde mysql (implique --config)" echo " -c | --config Sauvegarde le serveur ($srv_directories)" echo " -g | --gitlab Sauvegarde gitlab (implique --config)" - echo " -u | --unifi Sauvegarde unifi (/var/lib/unifi, implique --config)" + echo " -u | --unifi Sauvegarde unifi (/var/lib/unifi, implique + --config)" echo " -s | --seafile host Sauvegarde seafile host (seafile fuse)" - echo " -e | --encfs pass Use encfs protected directories with given password" + echo " -e | --encfs pass Utilise des dossiers chiffrés encfs, + protégés par le mot de passe donné" + echo " -i | --interrupt list Interrompt les services donnés (liste + séparé par des virgules) durant la création + de l'archive tar." } dest=/mnt/backup @@ -119,7 +142,7 @@ for arg in "$@"; do shift set -- "$@" `echo $arg | sed 's/^-\(-.\).*$/\1/'` done -optspec=":hvdcgus:mpe:" +optspec=":hvdcgus:mpe:i:" while getopts "$optspec" optchar; do case "${optchar}" in h) @@ -160,6 +183,9 @@ while getopts "$optspec" optchar; do encfs=true ENCPASS="$OPTARG" ;; + i) + SERVICES="${OPTARG//,/ }" + ;; *) echo "Option inconnue -$optchar" usage @@ -212,10 +238,15 @@ do ret=$? while [ $ret -ne 0 ] do - supprimer_anciennes_sauvegardes - test_and_fail $? "Plus d'espace sur le disque et pas d'ancienne sauvegarde a supprimer" - $action - ret=$? + if [ `df --output=avail . | sed 1d` -lt $((1024*1024)) ] + then + supprimer_anciennes_sauvegardes + test_and_fail $? "Plus d'espace sur le disque et pas d'ancienne sauvegarde a supprimer" + $action + ret=$? + else + test_and_fail 1 "l'action '$action' a planté innopinement" + fi done nom=${action/_/ } do_log "$nom reussie"