IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Archivage automatique avec roulement


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut Archivage automatique avec roulement
    Bonjour,

    On m'a demander de concevoir un script pour faire de l'archivage automatique d'un dossier partagé sur NAS.
    Le script doit être exécuté sur un NAS QNAP en version 4.1 via crontab tous les dimanche à 12H.
    La difficulté est de garder les archives en fonction d'un "roulement".
    Le client souhaite avoir les archives hebdomadaires pendant 8 semaines + 3 archives trimestrielles + 1 annuelle.
    Cela est-il faisable ?
    J'ai regardé les possibilités avec certaines commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # variables
    folder=Administratif
    src=/share/MD0_DATA/
    dest=/share/MD0_DATA/ArchivesNAS/$folder/
    now=$(date +"%Y-%m-%d")
     
    # archivage
    zip -r "$dest$share-$now.zip" "$src$share"
     
    # nombre d'archives
    find "$dest" -maxdepth 1 -type f | wc -l
    Par contre pour le reste, je ne sais pas trop vers quoi me diriger...
    Pourriez-vous m'aiguiller un peu SVP ?
    Merci d'avance

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    une solution très simple de roulement

    c'est un volume ou un fichier horodaté avec la sauvegarde dedans,
    en cas de succès virer la plus ancienne en calculant sans date. (ne pas oublier de gerer les années bisextiles !!! ainsi que les sauts d'années)

    il te manque en gros la recherche des backups anciens à virer, avec le calcul de date et tu fais derrière un find /chemin/vers/les/sauvegardes/ -type f -name *.zip -mtime +5 -exec rm -rf{} \; le mieux étant de mettre en dur le nom du volume/fichier en variable pour le -name et idem pour l'indicateur mtime.

    pour gerer tes problèmes de planning un marqueur dans le nom de fichier

    toto.$DATE.TRIM.zip toto.$DATE.ANNUEL.zip etc.... par exemple peut tout à fait suffir. pour identifier ce qui peut et surtout quand ça doit être épuré.

    j'avais une fonction en awk dans un coin pour calculer ce genre de truc.. je l'ai pas retrouvé ... mais c'était qu'un calcul calendaire de toute façon donc c'est refaisable...

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour

    C'est ce que j'ai fait pour mes sauvegardes Postgres. J'ai géré la périodicité grace au nom que je donne à mon fichier.
    • Si je demande une sauvegarde journalière, le fichier se nommera nomBdd.day.yyyy_quantieme.sql.
    • Si je demande une sauvegarde hebdomadaire, le fichier se nommera nomBdd.week.yyyy_noSem.sql.
    • Si je demande une sauvegarde mensuelle, le fichier se nommera nomBdd.month.yyyy_noMois.sql.
    • Si je demande une sauvegarde annuelle, le fichier se nommera nomBdd.year.yyyy.sql.

    C'est vrai, j'ai pas pensé au trimestre mais c'est facile à faire en prenant la partie entière de la division du mois courant par 3...

    Ensuite suffit de supprimer les fichiers les plus vieux de chaque catégorie...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    Bonjour à tous,

    je suis pas sûr de bien comprendre votre système de nommage des archives... le nommage est effectivement utile "pour l'homme" avec TRIM... ANNUEL... mais du coup on perd la notion de roulement !??
    Le roulement permet par exemple de remplacer (après J+365) l'archive annuelle par la plus ancienne archive trimestrielle.
    Et du coup, il faut également "déplacer" la plus ancienne archive hebdomadaire en trimestrielle..
    Du moins je voyais cela comme ça.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # fichiers annuelles
    find . -type f -daystart -mtime +365 -ls
     
    # Mais je parviens pas à lister les fichiers entre 2 dates...
    find . -type f -daystart -mtime +1 -mtime -1 -ls

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Tchupacabra Voir le message
    je suis pas sûr de bien comprendre votre système de nommage des archives... le nommage est effectivement utile "pour l'homme" avec TRIM... ANNUEL... mais du coup on perd la notion de roulement !??
    Chez-nous, le roulement se fait à la main. Suffit de lister le dossier d'archive (grâce aux noms c'est trié par catégories et par date) puis supprimer ceux du bas de la liste.

    Citation Envoyé par Tchupacabra Voir le message
    Et du coup, il faut également "déplacer" la plus ancienne archive hebdomadaire en trimestrielle..
    Non, je ne m'embête pas à changer une archive de catégorie. C'est lors de l'appel de mon programme d'archivage, en fonction de l'option passée, qu'il crée une archive d'une catégorie ou d'une autre. Si j'appelle mon programme avec l'option "-mh" alors il fera deux sauvegardes successives de la même bdd, la premiere ayant un nom en ".month" (mensuelle) et la second un nom en ".week" (hebdomadaire). Si la semaine suivante je relance une sauvegarde avec les mêmes options, alors il écrasera la mensuelle (puisqu'on est dans le même mois) mais il me créera une nouvelle hebdomadaire et j'aurais alors dans mon dossier deux archives en ".week" et une en ".month".
    Ensuite si je ne veux garder que les mensuelles, je supprime toutes les ".week" et inversement je supprime les ".month" si je ne veux que les hebdomadaires.
    Citation Envoyé par Tchupacabra Voir le message
    # Mais je parviens pas à lister les fichiers entre 2 dates...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -daystart -mtime +1 -mtime -1 -ls
    Ben si, ça marche... mais faut que tu joues avec les "+x" et "-y" pour cibler tes deux dates. Là tu demandes les fichiers ayant été modifiés à la fois il y a moins de 1 jour et à la fois il y a plus de 1 jour. Normal que tu n'aies rien !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    le roulement soit au script, soit à la main peut importe mais basé sur le nom de l'archive pour pouvoir garantir de toujours identifier la bonne quelque soit la personne qui réalise l'action même si c'est pas celle qui a construit/organiser le truc à la base... c'est ça l'idée...

    le second intérêt est comme Sve@r le dit la souplesse de décalage/copie/modification si on veut migrer la 4ieme trimestrielle en annuel ou la copier comme annuelle pour libérer du temps d'accès disque.... là encore aucune possibilité d'erreur puisque les fichiers sont horodatés & typés.

Discussions similaires

  1. Archivage automatique avec Excel
    Par phoque.r dans le forum Excel
    Réponses: 6
    Dernier message: 26/04/2007, 07h26
  2. Charger un module automatiquement avec des options debian
    Par ZiMo dans le forum Administration système
    Réponses: 4
    Dernier message: 22/12/2005, 14h22
  3. Numéro automatique avec PostgreSql
    Par BRAUKRIS dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/09/2005, 22h55
  4. Envoi de mail automatique avec Visual C++
    Par cza dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2005, 15h59
  5. Démarrage automatique avec xfce
    Par lunatix dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 21/09/2004, 22h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo