Pages : 1
#1 Le 28/12/2006, à 23:59
- Archaon59
Script pour copie avancée
Salut à tous !
Sous ce titre qui en dit peu, je cherche un script qui pourrait faire la chose qui suit :
Copier des fichers d'un type (par exemple des .jpg), ce, en masse, récursivement, en gardant la structure dans le répertoire d'arrivée, seulement si ces répertoires existent (houlà)
Par exemple, j'ai un dossier Mes Images, dont je veux copier les .jpg en gardant l'arborescence :
|Mes Images
|-Photos Vacances
|-Plage
|-photo1.jpg
|-photo2.png
|-Montagne
|-photo1.png
|-photo2.jpg
Et une clée USB Media, qui contient déjà
|Mes Images
|-Photos Vacances
|-Plage
|-photo9.jpg
Je veux arriver à un truc comme ça sur Media
|Mes Images
|-Photos Vacances
|-Plage
|-photo9.jpg
|-photo1.jpg
J'espère avoir été assez clair, j'espère qu'un scripteur pourra m'aider !
Merci d'avance !
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !"
-Albert Einstein
Hors ligne
#2 Le 29/12/2006, à 19:00
- gapz
Re : Script pour copie avancée
Moi je vois bien un truc qui ferais :
Tu copies tout les fichiers vers un autre endroit avec un cp -r
Tu supprimes ceux du type que tu veux avec un find -name *.truc -exec rm -f {} \;
Real programmers code in binary :: http://gapz.tuxfamily.org
Hors ligne
#3 Le 29/12/2006, à 19:20
- ggetalle
Re : Script pour copie avancée
# Disons que les images source se trouvent dans /home/Mes Images
# et que la destination soit /medais/usbdisk/Mes Images
# Attention, Il faut mettre des -->"<-- entre Mes Images car il y a un espace dans le texte
cd /home/"Mes Images"
# On demande à la commande find de ne rechercher que les fichiers (-type f)
# qui se terminent par .jpg en minuscules
# le résultat est transféré à la commade cpio qui copie les fichiers trouvés
# en gardant les droits linux d'origine
find . -type f -name "*.jpg" | cpio -dump /media/usbdisk/"Mes Images"
Gérard
Hors ligne
#4 Le 29/12/2006, à 20:16
- figaro
Re : Script pour copie avancée
cp -ruv ~/dossiersource /media/CL_USB/dossierdestination
Devrait faire ton bonheur.
dossiersource avec son chemin complet, idem pour dossier destination.
Dernière modification par figaro (Le 29/12/2006, à 21:26)
Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04
Hors ligne
#5 Le 31/12/2006, à 01:12
- Archaon59
Re : Script pour copie avancée
Merci ggetall, ta commande est presque parfait, j'écris bien presque car il va me créer les dossiers s'ils n'existent pas, or je veux juste un transfert, pas de création (je suis paresseux, mais bon la ligne de commande c'est fait pour ça !) .
figaro, je ne comprend pas très bien ta commande, tu pourrais approfondir ?
En tout cas merci beaucoup pour vos réponses ! Encore une petite chose et c'est magnifique (c'est déjà très beau !) !
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !"
-Albert Einstein
Hors ligne
#6 Le 31/12/2006, à 05:18
- Mifrey
Re : Script pour copie avancée
Archaon59 : un moyen de résoudre ton problème est de profiter du fait que « cp » ne crée pas un répertoire de destination s'il n'existe pas.
Par exemple,
cp $REPERTOIRE_SOURCE/Photos\ Vacances/Montagne/photo2.jpg $REPERTOIRE_DESTINATION/Photos\ Vacances/Montagne/photo2.jpg
ne fonctionnera pas car le répetoire « $REPERTOIRE_DESTINATION/Photos\ Vacances/Montagne/ » n'existe pas.
Il ne reste plus qu'à répéter cette commande sur tous les fichiers jpg :
cd $REPERTOIRE_SOURCE
find . -type f -iname '*.jpg' -exec cp -uv {} $REPERTOIRE_DESTINATION/{} \;
Hors ligne
#7 Le 31/12/2006, à 09:01
- figaro
Re : Script pour copie avancée
figaro, je ne comprend pas très bien ta commande, tu pourrais approfondir ?
Cela copiera tout le contenu de dossiersource y compris les sous répertoires dans le dossierdestination qui se trouve sur la clé USB de façon récursive en faisant uniquement la mise à jour (cela ne recopiera pas des fichiers qui y sont déjà s'ils n'ont pas été modifiés) et avec affichage à l"écran des opérations effectuées.
Si tu veux que dossierdestination porte le même nom tu ne mets rien, cela se fera automatiquement. Pour Linux tout est fichier pour contredire Mifrey : cp créera le répertoire.
PS: normalement la clé usb se monte automatiquement dans /media/CL_USB . Si c'est différent sur ton PC tu remplace /media/CL_USB par le dossier de montage de ta clé USB.
Dernière modification par figaro (Le 31/12/2006, à 09:01)
Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04
Hors ligne
#8 Le 31/12/2006, à 12:20
- Archaon59
Re : Script pour copie avancée
Donc, ta commande, je devrai peut être la faire après un
find . -type f -name "*.jpg" | cpio -dump /home/archaon/Temp
pour avoir un dossier temp avec uniquement des .jpg, puis ta commande, qui donnera cela chez moi :
cp -ruv ~/Temp /media/usbdisk/dossierdestination
J'essaye cela et je vous dis quoi .
Sinon vous n'avez pas un site expliquant la création d'un script ? Je voudrai adapter toutes les commandes ici pour les avoir avec un clic droit .
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !"
-Albert Einstein
Hors ligne
#9 Le 31/12/2006, à 14:50
- figaro
Re : Script pour copie avancée
Donc, ta commande, je devrai peut être la faire après un
find . -type f -name "*.jpg" | cpio -dump /home/archaon/Temp
pour avoir un dossier temp avec uniquement des .jpg, puis ta commande, qui donnera cela chez moi :
cp -ruv ~/Temp /media/usbdisk/dossierdestination
J'essaye cela et je vous dis quoi .
Sinon vous n'avez pas un site expliquant la création d'un script ? Je voudrai adapter toutes les commandes ici pour les avoir avec un clic droit .
je pense que tu peux faire directement :
find . -type f -name "*.jpg" | cpio -dumpv /media/usbdisk/dossierdestination
Seul défaut les fichiers du dossierdestination peuvent être écrasés par de plus anciens du dossiersource.
Avec le v tu suivras ce qui se passe dans le terminal.
Le blog de figaro (astuces diverses et tutos Samba pour débutants)
Le blog de cep (astuces Linux avancées)
Debian Lenny 6.0.1, Ubuntu 10.04.2, Ubuntu Remix 9.10, Ubuntu Netbook 10.04
Hors ligne
Pages : 1