Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/06/2014, à 13:39

percherie

Copier les dossiers et ignorer les liens symboliques

Bonjour,


Dans un dossier j'ai plusieurs type de dossier. Certains sont "réel" et d'autre sont des liens symbolique. Je souhaite copier uniquement les dossier "réel" et ignorer totalement les liens symbolique (comme si ils n'existaient pas).

J'ai fait plusieurs tentative mais sans résulta concret :

# crée une copie des liens ;-/
cp -aul * Nouveau\ dossier/

# essais avec xargs
find * -type d | xargs cp "{}" ~/Nouveau\ dossier
find * -type d | xargs cp ~/Nouveau\ dossier
find * -type d | xargs -t cp ~/Nouveau\ dossier

Un simple indice ou nom de commande me suffirait, je peut chercher sur internet comment y arriver.

Merci par avance.

Ps : comment copier des fichiers vers un dossier qui n'existe pas encore ? Pour que la création du dossier ce fasse au même moment.


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#2 Le 25/06/2014, à 14:07

pingouinux

Re : Copier les dossiers et ignorer les liens symboliques

Bonjour,
Voici une méthode

#!/bin/bash

nouveau="chemin du nouveau dossier" # Ne doit pas être dans le répertoire courant

for i in *
do 
   [ ! -d "$i" || -L "$i" ]] && continue
   mkdir -p "$nouveau"
   echo cp -R "$i" "$nouveau"
done

Enlever le echo si c'est bon

Hors ligne

#3 Le 25/06/2014, à 15:19

percherie

Re : Copier les dossiers et ignorer les liens symboliques

Merci pour ton aide. J'ai tenté de définir le chemin avec le raccourcis qui renvoi vers le /home/<compte> (~/test) mais je m'en sort pas (tester avec guillemet, sans, apostrophe normal et inversé). En attendant je défini le chemin complet.

J'ai séché pendant 15 mins mais j'ai fini par trouvé qu'il manquait un crochet en début de condition. Depuis ça fonctionne très bien.


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#4 Le 25/06/2014, à 15:36

percherie

Re : Copier les dossiers et ignorer les liens symboliques

Oups en utilisant le script je viens de me rendre compte que je doit définir à l'avance le nom des dossiers que je souhaite copier. Certains dossier doivent rester en place.

Comment définir une liste à placer dans la condition de la boucle ? à moins qu'il faut inclure la condition supplémentaire dans la boucle ? Une simple page vers de la documentation et je ferai mes tests empirique.

En tout cas merci pour ton aide.


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne

#5 Le 25/06/2014, à 17:42

pingouinux

Re : Copier les dossiers et ignorer les liens symboliques

Tu peux créer un fichier contenant la liste des dossiers à copier (un par ligne).

mkdir -p "$nouveau"
while read dossier
do
   echo cp -R "$dossier" "$nouveau"
done <liste_des_dossiers_a_copier

Hors ligne

#6 Le 25/06/2014, à 17:52

claudius01

Re : Copier les dossiers et ignorer les liens symboliques

Bonsoir,

Sauf erreur de ma part, la commande find (qui est récursive) ne déréférence pas par défaut les liens symboliques (cad ne les suivra pas) ce qui peut être une solution alternative et efficace si le find est suivi d'un tar puis un gzip.


Cordialement, A+
--
Claudius

Hors ligne

#7 Le 26/06/2014, à 22:27

percherie

Re : Copier les dossiers et ignorer les liens symboliques

Nikel, en définissant à l'avance les dossiers à copier ça me raccourcis énormément le code. Merci pour tout


Nomade en camion utilisant Ubuntu. Si vous souhaitez suivre mes voyages : http://toutenkamion.net/

Hors ligne