#1 Le 23/07/2012, à 11:02
- ced-mamou
[Résolu] Restauration de fichiers PDF suite à compression hasardeuse
Bonjour à tous,
Voici mon problème : j'ai fait un script pour compresser les fichiers PDF de mon réseau (je fais partie d'un service info, environnement full windows casi à part moi!!). J'ai rassemblé des idées ici et là pour faire un truc simple : 1. recherche, 2. sauvegarde et 3. compression.
A noter que je débute en bash.
Sur le papier ça allait bien et les premiers essais aussi. Le problème c'est que lorsque j'ai lancé la bête un week-end en mode "industriel" (environ 60 000 .pdf), il y a certains fichiers (entre 2000 et 2500) qui ont été vidés, taille après compression 2192 octets.
Donc là je suis content d'avoir un dossier de sauvegarde (avec en vrac tous mes .pdf à la racine à l'intérieur) mais je sèche un peu pour les remettre en place.
J'ai réussi à les retrouver via [find . -name "*.pdf" -a -size -4k => là j'ai déjà mis un certain temps parce-que 4k ça ne correspond à rien mais par exemple -3k il ne sort rien] mais je ne sais pas trop comment faire pour dire à mon script d'aller piocher celui qui a le même nom dans le dossier de sauvegarde pour le remettre en place.
Une idée ?
Dernière modification par ced-mamou (Le 24/07/2012, à 16:34)
Hors ligne
#2 Le 23/07/2012, à 12:02
- ludovic889
Re : [Résolu] Restauration de fichiers PDF suite à compression hasardeuse
salut
sans être un grand spécialiste, je dirais un truc comme ça
find . -name "*.pdf" -a -size -4k -print0 | xargs -0 -I file cp /votre/serveur/basename file file
Attention ne me faites pas confiance et attendez d'autres avis plus avisés
mais je pense que c'est un bon début
Dernière modification par ludovic889 (Le 23/07/2012, à 12:03)
Ce n'est pas grave de ne pas avoir l'heure si on a le temps.
Hors ligne
#3 Le 23/07/2012, à 12:24
- ludovic889
Re : [Résolu] Restauration de fichiers PDF suite à compression hasardeuse
re-bonjour
en tâtonnant, j'ai fait
find . -name "*.sh" -a -size -4k -print0 | xargs -0 -I file bash monscript.sh file
et monscript.sh contient
#!/bin/bash
file=$1
bfile=$( basename "$file" )
echo je déplace /votre/serveur/$bfile vers $file
ça commence à être intéressant ; mais il est urgent d'attendre !!!
Ce n'est pas grave de ne pas avoir l'heure si on a le temps.
Hors ligne
#4 Le 23/07/2012, à 12:42
- ced-mamou
Re : [Résolu] Restauration de fichiers PDF suite à compression hasardeuse
Bonjour,
Merci c'est très intéressant. En fait c'est le basename qui me manquait, je ne voyais pas comment récupérer le nom de mon fichier.
Super, je vais creuser ça moi aussi.
Hors ligne
#5 Le 24/07/2012, à 07:57
- nesthib
Re : [Résolu] Restauration de fichiers PDF suite à compression hasardeuse
juste une petite remarque, en bash basename est un peu inutile :
file="/un/chemin/vers/un/fichier"
echo ${file##*/}
pour plus de détails voir le man de bash à la section parameter expansion
@ced-mamou : sinon un conseil pour ne pas faire de bêtises, lorsque tu écris ton script ne déclenche aucune action, à la place mets quelque chose du genre :
echo cp "${fichier##*/}" "${fichier}"
Tu pourras enlever le « echo » lorsque tu seras certain que le script fait ce que tu veux.
De plus, et comme tu le remarques dans mon exemple, utilise des guillemets doubles autour de tes noms de variables, cela préservera les éventuels espaces dans les noms de fichier et évitera d'écraser des fichiers
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#6 Le 24/07/2012, à 16:32
- ced-mamou
Re : [Résolu] Restauration de fichiers PDF suite à compression hasardeuse
juste une petite remarque, en bash basename est un peu inutile :
file="/un/chemin/vers/un/fichier" echo ${file##*/}
Ah oui elle est sympa aussi celle-là!
pour plus de détails voir le man de bash à la section parameter expansion
J'ai essayé mais on se sent peu de chose quand on a beau lire et relire mais qu'on ne comprend pas
Et admiratif aussi de voir qu'il y en a qui maitrisent ça!
@ced-mamou : sinon un conseil pour ne pas faire de bêtises, lorsque tu écris ton script ne déclenche aucune action, à la place mets quelque chose du genre :
echo cp "${fichier##*/}" "${fichier}"
Tu pourras enlever le « echo » lorsque tu seras certain que le script fait ce que tu veux.
De plus, et comme tu le remarques dans mon exemple, utilise des guillemets doubles autour de tes noms de variables, cela préservera les éventuels espaces dans les noms de fichier et évitera d'écraser des fichiers
OK merci pour ces précieux conseils très instructifs (également merci à ludovic889). Je bascule le post en résolu je crois que j'ai désormais tous les éléments pour réparer ma boulette.
Dernière modification par ced-mamou (Le 24/07/2012, à 16:36)
Hors ligne