Problème avec sauvegarde serveur et crontab

Bonjours, j’ai un problème insoluble. Insoluble dans le sens ou pour moi c’est impossible^^.

Voici mon crontab:

[code]*/5 * * * * cd /var/www/minecraft/ && php /var/www/minecraft/info_serveur.php

30 2 * * * /var/www/admins/sauvegarde/sauvegarde.sh
00 20 * * * /var/www/admins/sauvegarde/sauvegarde.sh
30 12 * * * /var/www/admins/sauvegarde/sauvegarde.sh
[/code]

Comme on peut le voir j’exécute un script toute les 5 minutes pour générer une image. Au début elle était générée quand quelqu’un affichait une page ou elle était affiché: et donc il y avait beaucoup de chance qu’elle soit pas à jour. Je l’ai donc mis dans un cron et j’ai pas de problème vu qu’on voit bien sur l’image la date de génération qui est toujours augmenté de 5 minutes.

Mon problème vient de mon script de sauvegarde exécuté 3 fois par jour, car au lieu d’être exécuté seulement 3 fois par jour: c’est 6 fois par jour et pratiquement 4/6 minutes juste après la sauvegarde précédente dite “normal”, car programmé.

Et je ne vois pas pourquoi ça ferait ça, car ça le fait seulement une fois et juste après la sauvegarde, quelqu’un sait il pourquoi ?
Le problème c’est qu’a chaque fois ça arrête mon serveur MC et que moi je reDL des fichiers sur mon PC à cause de Dropbox pour rien!!!


Sinon quelqu’un sait comment faire en sorte de garder seulement les 3 derniers fichiers envoyé sur dropbox ? Au moins ça m’éviterait de devoir supprimer moi même mes anciennes sauvegarde, car ça enverrait la dernière sauvegarde et supprimerait celle en trop et moi quand j’arriverais sur mon PC ça me téléchargerais juste celle que j’ai pas sur mon PC et supprimerait celle en trop.
J’utilise Dropbox-Uploader github.com/andreafabrizi/Dropbox-Uploader

Il faut que j’arrive avec récupérer la liste des fichier avec “./dropbox_uploader.sh list” et faire une boucle dessus avec la commande “./dropbox_uploader.sh delete /backup.zip” et s’arrêter avant les 3 derniers fichiers. Mais je ne sais pas faire ça en bash

Bonjour;

sauvegarde-2015-02-13_02-40-01.tar.gz sauvegarde-2015-02-13_02-44-10.tar
Ta sauvegarde ne s’effectue-t-elle pas en 2 parties ?
c.-à-d.,
La création d’un fichier TAR puis la compression de celui-ci en .GZ ?
A+

C’est impossible car d’une j’upload de cette façon:

Donc ça ne peut envoyer rien d’autre que la sauvegarde qui vient d’être créé, si la date change pour moi c’est que le script est exécuter plusieurs fois.

J’ai supprimé les fichiers d’avant, mais j’ai eu le bug le 13 et un peut avant(je peux pas être plus précis) et a partir du 14 plus de problème. Donc je sais pas d’ou ça vient et si c’est réglé.

Tu sais faire ce que j’ai dit en bash ? car je veux garder seulement 4 sauvegarde par exemple sauf que je ne sais pas comment faire. Pour envoyer sur dropbox j’utilise: Dropbox-Uploader github.com/andreafabrizi/Dropbox-Uploader

Il faut que j’arrive avec la commande “./dropbox_uploader.sh list” à récupérer la liste et faire une boucle dessus avec la commande “./dropbox_uploader.sh delete /backup.zip” et s’arrêter avant les 3 derniers fichiers. Mais je ne sais pas faire ça en bash

up svp.

J’ai trouvé certaine partie de ce qu’il me faut, mais je n’y arrive toujours pas.

Ce code me permet de récupérer les fichiers sur Dropbox que je sauvegarde dans un fichier:

Ce qui donne:

[quote] > Listing “//”… DONE
[F] 266644425 sauvegarde-2015-02-17_12-30-01.tar.gz
[F] 267125951 sauvegarde-2015-02-17_20-00-01.tar.gz
[F] 267375936 sauvegarde-2015-02-18_02-30-01.tar.gz
[F] 267391879 sauvegarde-2015-02-18_12-30-01.tar.gz
[F] 267769565 sauvegarde-2015-02-18_20-00-01.tar.gz
[F] 268212722 sauvegarde-2015-02-19_02-30-01.tar.gz
[F] 268219866 sauvegarde-2015-02-19_12-30-01.tar.gz[/quote]

Donc vu que j’ai trois sauvegarde par jours on pourrait dire que je veux garder seulement celle du jour précédent et donc ici suprimé les deux première de la liste qui sont du 17. Il faut donc qu’avec une condition en bash je puisse voir combien de sauvegarde j’ai sur dropbox, car si j’en ai plus de 6, ça veut dire que l’on peut commencer à en supprimer. Ainsi le script suprimerait une sauvegarde à chaque fois qu’il en ajoute une.
J’ai donc trouvé en bash ce code qui va bouclé seulement sur le nombre de ligne voulu:

i=0 while ((i <= 1)) do echo $i ((i += 1)) done

Et ensuite dans ma boucle j’aurais plus qu’a faire:

Mais comment récupérer juste le nom du fichier, on à la fonction explode en bash ? c’est un peut trop différent ce langage pour moi.

Si quelqu’un à une meilleur idée, je suis bloqué.

up

Bonjour,

Voici un exemple qui te retourne le contenu du fichier ‘file.txt’ sauf les 6 dernières lignes (head -n -6), et qui isole (awk …) la partie ‘nom de fichier’.

Ca marche, ça m’affiche:

"//"... sauvegarde-2015-02-19_20-00-01.tar.gz sauvegarde-2015-02-20_02-30-01.tar.gz

Mais comment je boucle dessus pour exécuter la commande delete sur chaque fichier ? Je suis pas un pro du bash

J’ai essayé et j’ai plus d’erreur:

J’aurais fait de la sorte :

#!/bin/bash

FILE="/path/minecraft/include/script_bash/file.txt"
DROPBOX="/path/sauvegarde/Dropbox-Uploader/dropbox_uploader.sh"

head -n -6 ${FILE} | awk '{print $3}' | while read LINE; do
    echo "${DROPBOX} delete ${LINE}"
done

Bien sur, ici, je ne fais qu’imprimer (Ligne echo “${DROPBOX} …”) ce qui doit être fait.
De plus, il faudra que tu mettes des tests de sécurité pour veiller à ne pas effacer plus de chose que prévu (Je pense à la ligne que tu mets au début de ton fichier -> Listing “//” DONE, ou tes ‘//’ et tes ‘…’ peuvent rapidement avoir un effet non désiré.

C’est la commande qui donne ces “"//"…”, il suffit juste de commencer sur la ligne d’après ?

Ca n’a pas l’air de marcher, je vois aucun fichier supprimé

Le script version ‘fonctionnelle’ :

#!/bin/bash

FILE="/path/minecraft/include/script_bash/file.txt"
DROPBOX="/path/sauvegarde/Dropbox-Uploader/dropbox_uploader.sh"

head -n -6 ${FILE} | tail -n -1 | awk '{print $3}' | while read LINE; do
    echo -n "Suppression de ${LINE} ... "
    ${DROPBOX} delete "${LINE}"
    echo "[OK]"
done

Merci ça fonctionne, on dirait qu’au début ça n’exécutait pas la commande, ça l’affichait juste.
Par contre on dirait que ça supprime qu’un fichier à chaque fois, c’est normal ? C’est pas grave dans la mesure qu’a chaque ajout de sauvegarde ça enlève une sauvegarde pour mettre la nouvelle par contre faut pas le faire si il en reste que 6 ou erreur:
Suppression de “//”… … > Deleting “/”/"…"… FAILED

Bref merci

Sinon Dropbox à une option pour éviter de synchro un répertoire ? Genre j’envoie mes sauvegardes sur dropbox, mais j’aimerais éviter de synchro mes sauvegarde sur mon PC ou seulement quand je veux