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 Archivage de fichiers pdf + déplacement de l'archive vers un dossier de destination


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2016
    Messages : 10
    Par défaut Script Archivage de fichiers pdf + déplacement de l'archive vers un dossier de destination
    Bonjour,


    Dans le cadre de mon travail, je dois établir un script qui récupère les *.pdf de plus de 7 jours dans un dossier source et viens archiver la totalité des fichiers répertoriés.
    Ensuite l'archive aura pour but d'être déplacer dans un dossier destination.

    Le soucis et d'où mon post sur le forum, je n'arrive pas à le faire fonctionner.

    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
     
    DATE=$(date +"%m-%d-%Y")
     
    		cd "app/generix/editique/input/specifs_PRD/output/mailexped" # Changement de répertoire
     
    		for folder in $(find . -name mailexped -type d) # Pour chaque dossiers "mailexped" trouvé.
    	do
    		for file in $(find $folder *.pdf -mtime +7) # Pour chaque fichier".pdf" vieux de +7jours dans le dossier mailexped.
     
    	do
    		tar czf "archivepdf_$DATE.tar.gz" $folder/*.pdf # créer le fichier archivepdf_$DATE.tar.gz et ajouter tout les fichiers pdf de $folder
    		echo "Archivage en cours sur le répertoire /home/backup/archivepdf_$DATE.tar.gz , merci de patienter..."
     
    	done
     
    		mv "archivepdf*.tar.gz" "/home/backup/" # Déplacement de l'archive crée dans le dossier concerné

    Une erreur survient : syntax error: unexpected end of file


    Suite à mes recherches, j'ai trouvé quelques informations qui m'ont été utile comme le if -> fi ou encore le for -> done

    Mais après les avoir appliqué, le message apparaît toujours.


    Quelqu'un pourrait m'éclairer à ce sujet ? Voir me conseiller sur l'optimisation du script (A savoir qu'il sert juste de base et compte être modifié par la suite dans le cadre de long traitement).


    En vous remerciant d'avance,
    Whitex.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 376
    Par défaut
    Bonjour et Bienvenue,

    Est-ce que ton script est bien au format unix ?

    Est-il complet, car il manque un done dans ton post ?

    A quoi te sert le 2éme find puisque tu n'exploite pas la variable file de la 2éme boucle ?

    Autrement, quel est l'arborescence de tes répertoires et fichier pdf, juste pour être sur que le find est bien util ou si tu utilises bien le bon niveau de filtre avec find ?

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2016
    Messages : 10
    Par défaut
    Merci de ton accueil,


    C'est bien un fichier au format Unix script file.

    Je suis surpris de ma faute d'inattention, je l'ai pourtant relis plusieurs fois.
    En effet, j'utilise deux fois la fonction for, il est donc logique que je rajoute le deuxième done.


    En ce qui concerne le dossier source / destination en partant de la racine
    Source : app/generix/editique/input/specifs_PRD/ouput/mailexped
    Destination : home/backup

    En revanche, le script ne fonctionne toujours pas pour autant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    :
    command not foundine 2:
    ./scripts_pdf.sh: line 3: cd: app/generix/editique/input/specifs_PRD/output/mailexped: No such file or directory
    : command not foundine 4:
    '/scripts_pdf.sh: line 6: syntax error near unexpected token `do
    '/scripts_pdf.sh: line 6: `     do
    `
    PS : Quand je tape le cd manuellement, cela fonctionne correctement.
    Je me suis d'ailleurs bien assuré de faire un copier / coller du répertoire, il n y a pas de faute de syntaxe de ce côté.


    Pour la deuxième boucle, elle m'est utile pour indiquer qu'il faut uniquement prendre dans le répertoire source les fichiers.pdf datant de 7 jours ou plus.
    Je ne saisis pas ce que tu souhaites me dire.

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 376
    Par défaut
    Et ton script est à la racine ?

    Si ce n'est pas le cas, il est logique que le cd ne fonctionne pas (manque le '/' du début).

    Peux-tu donner le résultat de la commande suivante:

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2016
    Messages : 10
    Par défaut
    Non le script n'est pas à la racine mais dans le dossier /home/scripts_pdf.sh

    Pour ce qui est du cd, le problème venait en effet du "/" manquant.


    Voici le contenu du cat :

    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
     cat -A scripts_pdf.sh
    DATE=$(date +"%m-%d-%Y")^M$
    ^M$
    ^I^Icd "/app/generix/editique/input/specifs_PRD/output/mailexped" # Changement de rM-CM-)pertoire^M$
    ^I^I^M$
    ^I^Ifor folder in $(find . -name mailexped -type d) # Pour chaque dossiers "mailexped" trouvM-CM-).^M$
    ^Ido^M$
    ^I^Ifor file in $(find $folder *.pdf -mtime +7) # Pour chaque fichier".pdf" vieux de +7jours dans le dossier mailexped.^M$
    ^I^M$
    ^Ido^M$
    ^I^Itar czf "archivepdf_$DATE.tar.gz" $folder/*.pdf # crM-CM-)er le fichier archivepdf_$DATE.tar.gz et ajouter tout les fichiers pdf de $folder^M$
    ^I^Iecho "Archivage en cours sur le rM-CM-)pertoire /home/backup/archivepdf_$DATE.tar.gz , merci de patienter..."^M$
    ^I^M$
    ^Idone^M$
    ^Idone^M$
    ^I^M$
    ^I^Imv "archivepdf*.tar.gz" "/home/backup/" # DM-CM-)placement de l'archive crM-CM-)e dans le dossier concernM-CM-)

  6. #6
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 376
    Par défaut
    Ton fichier n'est pas au format unix, mais au format dos... d'où les erreurs que tu rencontres

    Mais, ensuite, je ne comprends pas ta logique de 2 boucle for sur des find, je pense qu'une seul boucle est suffisante, le deuxième find ne devrait être là que pour récupérer la liste des fichiers pdf plus vieux de 7 jours.

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

Discussions similaires

  1. [Batch] copier fichiers pdf de plusieurs sous répertoires vers un autre dossier
    Par samsam007 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 03/05/2016, 09h00
  2. [Batch] script batch pour modifier un fichier pdf
    Par yabo84 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 05/07/2013, 12h22
  3. Shell script archivage vieux fichiers .log
    Par LuffyyffuL dans le forum Linux
    Réponses: 2
    Dernier message: 31/12/2011, 12h39
  4. [Script sh] Gzip Fichiers .pdf par paquets
    Par kyzeur dans le forum Linux
    Réponses: 1
    Dernier message: 06/07/2009, 14h27
  5. Réponses: 1
    Dernier message: 07/12/2007, 11h53

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