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

Scripts/Batch Discussion :

Conserver uniquement les backups des 7 derniers jours


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut Conserver uniquement les backups des 7 derniers jours
    Salut a tous,

    J'ai cree un fichier batch pour faire un backup quotidien de ma base de donnee. Le fichier backup est sous la forme: nom_%annee%%mois%%jours%
    Donc chaque jour j'ai une nouveau fichier.
    Maintenant j'aimerais ameliorer mon batch pour qu'il me supprime le fichier qui a plus d'une semaine. Je veux conserver que les 7 derniers backups.
    Je sais pas trop comment m'y prendre.

    Voici mon batch:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    @echo off
    
    ...
    
    REM Elements de la date
    for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
     set day=%%i
     set month=%%j
     set year=%%k
    )
    
    REM Elements de l'heure
    for /f "tokens=1-3 delims=: " %%i in ("%time%") do (
     set hh=%%i
     set nn=%%j
    )
    
    REM Commande de back up
    %PGBIN%pg_dump -i -h %PGHOST% -p %PORT% -U %PGUSER% -F c -b -D -v -f "%BACKUPDIR%db_ag-%year%%month%%day%.backup" db_ag

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Par défaut
    Salut!
    Voici un script non testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    @echo off
    
    rem ———————————————————-
    rem Nettoyage des dossiers
    rem Suppression des fichiers de plus de N jours
    rem ———————————————————-
    
    rem Configuration
    
    set path_a_nettoyer=%systemdrive%\db_ag
    set nb_jours=7
    
    rem Suppression des fichiers vieux de plus de 7 jours
    
    for /f “delims=” %%a in (’dir %path_a_nettoyer%\ /b /ad /s ^| findstr /i \%1') do (
     
     forfiles /p %%a /s /m *.* /d -%nb_jours% /c “cmd /c del @file : date >= %nb_jours% days > NUL”
    
    )
    Je pars du principe que le dossier "db_ag" est sous l'O.S
    Il te faut aussi télécharger la commande "forfiles" qui n'existe pas sous DOS:
    ftp://ftp.microsoft.com/ResKit/y2kfix/x86/forfiles.exe
    Fait aussi une copie de db_ag avant de lancer le script.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    Salut,

    Je viens de le tester mais voila ce que j'obtiens avec un echo ON:
    E:\test>batch

    E:\test>rem ùùùùùùùùùùùùùùùùùùù-

    E:\test>rem Nettoyage des dossiers

    E:\test>rem Suppression des fichiers de plus de N jours

    E:\test>rem ùùùùùùùùùùùùùùùùùùù-

    E:\test>rem Configuration

    E:\test>set path_a_nettoyer=E:\test

    E:\test>set nb_jours=7

    E:\test>rem Suppression des fichiers vieux de plus de 7 jours
    ö was unexpected at this time.
    E:\test>for /f ôdelims= ö %a in (Ædir E:\test\ /b /ad /s ^| findstr /i \') do (
    E:\test>
    Mon code (pratiquement pas modifie):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    @echo on
    
    rem ———————————————————-
    rem Nettoyage des dossiers
    rem Suppression des fichiers de plus de N jours
    rem ———————————————————-
    
    rem Configuration
    
    set path_a_nettoyer=E:\test
    set nb_jours=7
    
    rem Suppression des fichiers vieux de plus de 7 jours
    
    for /f “delims=” %%a in (’dir %path_a_nettoyer%\ /b /ad /s ^| findstr /i \%1') do (
     
     forfiles /p %%a /s /m *.* /d -%nb_jours% /c “cmd /c del @file : date >= %nb_jours% days > NUL”
    
    )
    (Le dossier "test" contient tous les fichiers backup et forfiles.exe est dans le meme dossier)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Par défaut
    Re!
    db_ag c'est quoi dans le script initial?

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    db_ag c'est juste le nom de la base de donnee qui est backed up.

    En la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %PGBIN%pg_dump -i -h %PGHOST% -p %PORT% -U %PGUSER% -F c -b -D -v -f "%BACKUPDIR%db_ag-%year%%month%%day%.backup" db_ag
    peut se lire comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %path_de_pg_dump.exe%pg_dump -i -h %nom_seveur_base_de_donnee% -p %PORT% -U %nom_utilisateur% -F c -b -D -v -f "%path_du_backup%db_ag-%year%%month%%day%.backup" db_ag
    Donc pour aujourd'hui, par exemple, cette commande cree un fichier db_ag-20090220.backup de la base de donne db_ag dans le dossier %BACKUPDIR%

    En fait, ce qu'il faut savoir, c'est que chaque jour un fichier db_ag-yyyymmdd.backup est cree dans un dossier. Et j'aimerais limiter le nombre de fichier au 7 derniers crees.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Par défaut
    OK!
    Le dossier Backupdir contenant les "db_ag" est où sur ton PC?
    Sur l'O.S, sur le Bureau ..?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les données des 30 derniers jours de l'année
    Par ableur dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 12/02/2015, 09h31
  2. Réponses: 3
    Dernier message: 20/02/2014, 15h34
  3. Récupérer les enregistrements des 3 derniers mois
    Par cmoiscrat dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/07/2006, 09h39
  4. Rechercher les documents des 7 derniers jours...
    Par titoumimi dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/03/2006, 16h29
  5. Filtre sur les données des 3 derniers mois?
    Par Arkalys dans le forum Access
    Réponses: 2
    Dernier message: 21/10/2005, 09h02

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