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 :

Script spécifique copie de fichier


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Script spécifique copie de fichier
    Bonjour,

    je cherche à faire un script qui copie une liste de fichiers si la date de modification d'un fichier en particulier, est égale à la date du jour.

    Pour le moment, j'ai fait un script qui copie les fichiers que je veux dans un répertoire bien spécifique. J'ai créé une tache cron qui lance ce script tous les jours.

    Je souhaiterais que lorsque le cron lance le script, celui-ci détermine la date de modification d'un fichier en particulier.

    Si la date est égale à celle du jour, alors on poursuit la suite du script qui va faire la copie.
    Si la date n'est pas celle du jour, alors le script s’arrête la jusqu'au prochain lancement de la tache cron le lendemain.

    Petite précision. En cherchant, j'ai vu que pas mal de gens voulais faire la copie des fichiers selon une date. Or, je veux copié une liste de fichier SI la date de modification d'un fichier en particulier est bien celle du jour.

    J'espère que j'aurais été assez clair.
    Je suis sous Centos 5.9.

    Merci d'avance à ceux qui voudront bien m'aider.

  2. #2
    Expert éminent sénior 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 : 47
    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
    Points : 12 262
    Points
    12 262
    Par défaut
    si je comprends bien tu as 1 fichier référent et c'est sa date à lui qui défini qu'il faut copier la liste de fichier ou non ?

    genre
    toto <- référent
    tutu
    titi

    si toto à été modifié dans les 24H alors copier tutu et titi

    suffit alors d'un simple find pour faire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0 9 * * * find /chemin/complet/ -type f -name "toto" -mtime -1 -exec cp tutu titi destination/ \;
    ou si tu veux que depuis minuit spécifiquement donc date réelle au lieu de 24H suffit d'utiliser le comparateur newer de find avec un fichier que tu crées toutes les 24H dans /tmp avec une command touch en cron à 00h01 par exemple.

    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    0 0 * * * rm /tmp/fichier_jour
    1 0 * * * touch /tmp/fichier_jour
    et le tour est joué pas besoin de scripts pour faire ça

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour ta réponse claire et rapide!!!!!

    Est-il possible de mettre cette commande dans un script quand meme?
    car j'ai un lot de fichier que je copie qu'il faut que je compresse en tar.gz

    J'ai vu aussi dans d'autres post pendant mes recherches qu'il fallait d'abord écrire une commande pour se mettre dans le bon répertoire. C'est bien par ta commande "find /chemin/complet" que tu fais ça? ça reviens au meme que de mettre un bout de code genre "cd /chemin complet" avec te lancer la commande?

    Merci encore de toute ton aide.

  4. #4
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par frp31 Voir le message
    si je comprends bien tu as 1 fichier référent et c'est sa date à lui qui défini qu'il faut copier la liste de fichier ou non ?

    genre
    toto <- référent
    tutu
    titi

    si toto à été modifié dans les 24H alors copier tutu et titi

    suffit alors d'un simple find pour faire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0 9 * * * find /chemin/complet/ -type f -name "toto" -mtime -1 -exec cp tutu titi destination/ \;
    ou si tu veux que depuis minuit spécifiquement donc date réelle au lieu de 24H suffit d'utiliser le comparateur newer de find avec un fichier que tu crées toutes les 24H dans /tmp avec une command touch en cron à 00h01 par exemple.

    genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    0 0 * * * rm /tmp/fichier_jour
    1 0 * * * touch /tmp/fichier_jour
    et le tour est joué pas besoin de scripts pour faire ça
    Autre question : est-il possible de mettre quelque chose du genre :

    " SI find /chemin/complet/ -type f -name "toto" -mtime -1 -exec

    alors continuer l'exécution du script (cp de mes fichiers)

    SI find /chemin/complet/ -type f -name "toto" -mtime -1 -exec est différent

    alors sortir du script sans rien faire" ???????

    Se serait vraiment le top du top!!!! Merci encore de ton aide.

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Et est-ce que se serait possible à la limite de faire une tache cron de ce type :


    0 9 * * * find /chemin/complet/ -type f -name "toto" -mtime -1 -exec /chemin/de/mon/script/mon_script.sh/ \;

    ??

    Désolé de te mettre plusieurs réponses avant que toi même tu me répondes mais je cherche en même temps.

    Merci une nouvelle fois.

  6. #6
    Expert éminent sénior 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 : 47
    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
    Points : 12 262
    Points
    12 262
    Par défaut
    Citation Envoyé par toubabn11 Voir le message
    Autre question : est-il possible de mettre quelque chose du genre :

    " SI find /chemin/complet/ -type f -name "toto" -mtime -1 -exec

    alors continuer l'exécution du script (cp de mes fichiers)

    SI find /chemin/complet/ -type f -name "toto" -mtime -1 -exec est différent

    alors sortir du script sans rien faire" ???????

    Se serait vraiment le top du top!!!! Merci encore de ton aide.
    c'est déjà le cas puisque si le newer est faux ou le mtime est faux alors l'exec ne se fait pas donc la commande cp n'est pas faite).


    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $ 
    $ find . -type f -name "EXEMPLE" -exec echo OK \;
    $ touch EXEMPLE                                  
    $ find . -type f -name "EXEMPLE" -exec echo OK \;
    OK
    $ rm EXEMPLE
    $ find . -type f -name "EXEMPLE" -exec echo OK \;
    $

  7. #7
    Expert éminent sénior 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 : 47
    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
    Points : 12 262
    Points
    12 262
    Par défaut
    Citation Envoyé par toubabn11 Voir le message
    Et est-ce que se serait possible à la limite de faire une tache cron de ce type :


    0 9 * * * find /chemin/complet/ -type f -name "toto" -mtime -1 -exec /chemin/de/mon/script/mon_script.sh/ \;

    ??

    Désolé de te mettre plusieurs réponses avant que toi même tu me répondes mais je cherche en même temps.

    Merci une nouvelle fois.
    oui tu peux faire comme ça ou meme lancer le script depuis la cron et le find sera DANS le script

    c'est plus une question de choix que d'autre choses pour un script "simple" dont une session en echec ne sera pas amené à perturber d'autres executions plus tard du meme script...

  8. #8
    Expert éminent sénior 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 : 47
    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
    Points : 12 262
    Points
    12 262
    Par défaut
    Citation Envoyé par toubabn11 Voir le message
    Merci ... C'est bien par ta commande "find /chemin/complet" que tu fais ça? ça reviens au meme que de mettre un bout de code genre "cd /chemin complet" avec te lancer la commande?
    oui

    dans tous script on mets les chemins réels plutot que de faire des commandes cd pour une raison très simple, c'est que si la commande cd échoue pour une raison quelconque, et qu'on la teste pas on a une erreur et une autre pour la commande passée... soit 2 erreurs à gerer au lieu d'une....

    donc si un jour tu fais un script très gros genre 4000 lignes ... pour corriger.... si il faut changer 2 lignes par 2 lignes ..... à chaque fonction en erreur.... au lieu d'une seule on fait 2x plus de boulot hors un bon informaticien est un fénéant il se fait plus chier pour bien faire dès le début pour glander après

  9. #9
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci Beaucoup FRP31 !!!
    Je vais tester ça et je te donnerais la réponse.

    Merci encore !!!!!! ;-)

  10. #10
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Dernière question avant de tester, est-il possible d'exécuter cette commande sur un serveur pour qu'il vérifie les fichiers qui se trouvent sur un autre serveur?

    L'action de copie des fichiers se fait d'un serveur à un autre.

    Merci encore une fois!!!!!!!

  11. #11
    Expert éminent sénior 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 : 47
    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
    Points : 12 262
    Points
    12 262
    Par défaut
    oui bien sur pareil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh user@host "commande"
    tu peux intercepter le resultat localement pour traiter et déclancher ce que tu veux.

Discussions similaires

  1. [Batch] Script de copie de fichier (batch ou powershell?)
    Par kondor76 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/09/2014, 16h28
  2. Script Batch copie de fichier critères particuliers
    Par liondu75 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 25/11/2010, 12h41
  3. Script de copie de fichier sur un ftp
    Par micou dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 09/10/2009, 11h56
  4. Script de copie de fichier
    Par nsnous1 dans le forum VBScript
    Réponses: 2
    Dernier message: 11/08/2008, 20h51
  5. Copie de fichiers en DOS via script
    Par crashyear dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 24/10/2007, 16h26

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