Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 11-04-2017 17:26:09

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Bonjour,
J'aurais voulu automatiser la création de liens symboliques dans un dossier et ses sous-dossier grâce à une commande. Est-ce possible?
J'ai pensé utiliser find et ln -s mais sans succès avec cette commande :

ln -s /var/www/media/theme/ | find /mnt/0p1/ -type d


Cette ligne ne fait que m'afficher les dossiers et sous dossiers de /mnt/0p1

Quelqu'un aurait-il une idée ?

Merci d'avance

Hors ligne

#2 11-04-2017 18:42:48

kyodev
Banni(e)
Lieu : Lyon
Distrib. : Debian
Noyau : probablement stretch
(G)UI : variable selon l'humeur de naguam
Inscription : 18-08-2013

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

ça serait pas

ln -s /var/www/media/theme/ `find /mnt/0p1/ -type d`

ou

ln -s /var/www/media/theme/ $(find /mnt/0p1/ -type d)

que tu cherches?
tu exploites le retour de la commande find exécutée dans un sous-shell


[mode aéré]

Hors ligne

#3 11-04-2017 19:33:22

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Je pense pas que ce soit ça ... hmm
En tout cas si j'ai bien compris, le fait de mettre la commande find entre côte, ça l'exécute dans un sous-shell ?

Je cherche à créer le lien symbolique theme, dans tout les dossiers et sous-dossiers de /mnt/0p1 automatiquement.
Voilà ce qu'il me retourne avec tes commandes:

ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/themes »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/backup »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/comity »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/backup »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/default »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/backup »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/ui »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/backup »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/js »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/Films »: Le fichier existe
ln: impossible de créer le lien symbolique « /mnt/0p1/Tmp/Films/Séries/Limitless/Séries »: Le fichier existe


Avez-vous une autre idée ?
Merci

Hors ligne

#4 11-04-2017 19:54:35

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

J'ai fais un autre test avec ces commandes, j'ai créé un dossier test avec 2 sous-dossiers test1 et test2 et en lançant la commande:

#ln -s /var/www/media/theme/ `find /home/kolok/test/ -type d`


en la lançant une 2eme fois on obtient


ln: impossible de créer le lien symbolique « /home/kolok/test/test2/theme »: Le fichier existe
ln: impossible de créer le lien symbolique « /home/kolok/test/test2/test »: Le fichier existe
ln: impossible de créer le lien symbolique « /home/kolok/test/test2/test1 »: Le fichier existe
 


La commande à donc créé les liens symboliques de theme, test et test1 dans test2 ...
Je voulais theme dans test, test1 et test2.

Une idée ?

Hors ligne

#5 11-04-2017 19:57:04

kyodev
Banni(e)
Lieu : Lyon
Distrib. : Debian
Noyau : probablement stretch
(G)UI : variable selon l'humeur de naguam
Inscription : 18-08-2013

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

anticore a écrit :

ça l'exécute dans un sous-shell ?

non, ça récupère le résultat dans le sous-shell où find s'exécutera car find n'est pas une commande intégrée au shell.
après faut vérifier la validité de cette recherche


[mode aéré]

Hors ligne

#6 11-04-2017 20:24:22

raleur
Membre
Inscription : 03-10-2014

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Si je comprends bien, tu veux créer un lien symbolique qui pointe vers /var/www/media/theme/ dans chaque sous-répertoire de /mnt/0p1/ ?
D'après la page de manuel de ln, il n'y a pas de forme permettant de créer des liens dans plusieurs répertoires de destination, seulement pour créer plusieurs liens dans un même répertoire de destination.

Un possibilité consiste à utiliser l'option -exec de find pour exécuter la commande ln pour chaque répertoire trouvé.
Si tu ne veux pas t'embêter avec la syntaxe absconse de find, tu peux utiliser une boucle for sur les résultats du find.

Dernière modification par raleur (11-04-2017 20:25:25)

Hors ligne

#7 11-04-2017 21:03:17

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

C'est exactement ça !
Merci je vais essayer de suivre cette voie.

Hors ligne

#8 11-04-2017 21:03:37

Severian
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 4.9.0-0.bpo.1-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

peut être un soucis au niveau de la commande

man ln


[...]
SYNOPSIS
       ln [OPTION]... [-T] CIBLE NOM_DU_LIEN (1er format)
       ln [OPTION]... CIBLE (2e format)
       ln [OPTION] ... CIBLE ... RÉPERTOIRE (3e format)
       ln [OPTION] ... -t RÉPERTOIRE CIBLE ... (4e format)
[...]
       -t, --target-directory=RÉPERTOIRE
              indiquer le RÉPERTOIRE dans lequel les liens seront créés
[...]
 


je n'ai mis que certaines parties du man

pour moi il manque le -t dans ta commande

ln -s -t /var/www/media/theme/ `find /home/kolok/test/ -type d`



(par contre j'espère que tes noms de dossiers n'ont pas d'espace)


"il est urgent d'attendre" (bendia)
ob3-de10.pngbanner98x30.png

Hors ligne

#9 11-04-2017 21:25:30

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Mes noms de dossier n'ont effectivement pas d'espace, et la commande avec -t ne donne rien. kernal_panic.gif

ln -s -t /var/www/media/theme/ `find /home/kolok/test/ -type d`


ln: impossible de créer le lien symbolique « /var/www/media/theme/test »: Le fichier existe
ln: impossible de créer le lien symbolique « /var/www/media/theme/test1 »: Le fichier existe
ln: impossible de créer le lien symbolique « /var/www/media/theme/test2 »: Le fichier existe
 


/home/kolok/test#ls -l
 



total 8
drwxr-xr-x 2 root root 4096 avril 11 21:14 test1
drwxr-xr-x 2 root root 4096 avril 11 21:14 test2
 


/home/kolok/test#ls -l test1
 


total 0
 


/home/kolok/test#ls -l test2
 


total 0
 

Hors ligne

#10 11-04-2017 21:26:16

Severian
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 4.9.0-0.bpo.1-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

raleur a écrit :

Si je comprends bien, tu veux créer un lien symbolique qui pointe vers /var/www/media/theme/ dans chaque sous-répertoire de /mnt/0p1/ ?
D'après la page de manuel de ln, il n'y a pas de forme permettant de créer des liens dans plusieurs répertoires de destination, seulement pour créer plusieurs liens dans un même répertoire de destination.

Un possibilité consiste à utiliser l'option -exec de find pour exécuter la commande ln pour chaque répertoire trouvé.
Si tu ne veux pas t'embêter avec la syntaxe absconse de find, tu peux utiliser une boucle for sur les résultats du find.



haa !! je n'avais pas compris comme ça neutral

for i in `find /mnt/0p1/* -type d`; do ln -s -t $i /var/www/media/theme/; done



petite modif du code, ajout de * à /mnt/0p1/* sinon tu te retrouve avec le lien aussi à la racine de /mnt/0p1/

si tu veux tester en premier c'est

for i in `find /home/kolok/test/* -type d`; do ln -s -t $i /var/www/media/theme/; done

Dernière modification par Severian (11-04-2017 21:43:42)


"il est urgent d'attendre" (bendia)
ob3-de10.pngbanner98x30.png

Hors ligne

#11 11-04-2017 21:44:26

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Exact !! Ca fonctionne parfaitement sur mon dossier test mais pas sur /mnt/0p1.

for i in `find /mnt/0p1/* -type d`; do ln -s -t $i /var/www/media/theme/; done


ln: impossible d'accéder à « server/www/websites/OpenUpload/templates/default/modules »: Aucun fichier ou dossier de ce type
ln: impossible d'accéder à « /mnt/0p1/Tmp/backup »: Aucun fichier ou dossier de ce type
ln: impossible d'accéder à « server/www/websites/OpenUpload/templates/default/modules/admin »: Aucun fichier ou dossier de ce type
ln: impossible d'accéder à « /mnt/0p1/Tmp/backup »: Aucun fichier ou dossier de ce type
ln: impossible d'accéder à « server/www/websites/OpenUpload/templates/default/modules/auth »: Aucun fichier ou dossier de ce type
ln: impossible d'accéder à « /mnt/0p1/Tmp/backup »: Aucun fichier ou dossier de ce type
ln: impossible d'accéder à « server/www/websites/OpenUpload/templates/default/modules/files »: Aucun fichier ou dossier de ce type
ln: impossible d'accéder à « /mnt/0p1/Tmp/backup »: Aucun fichier ou dossier de ce type
 



Je comprend pas...

Dernière modification par anticore (11-04-2017 21:47:01)

Hors ligne

#12 11-04-2017 21:47:37

Severian
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 4.9.0-0.bpo.1-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

le disque qui est monté sur /mnt/0p1 est sous quel format ? (ext4, ntfs, fat...) ?
le format ntfs ne prend pas en charge les liens symboliques

"il est urgent d'attendre" (bendia)
ob3-de10.pngbanner98x30.png

Hors ligne

#13 11-04-2017 22:10:25

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Ah oui il est en ntfs ! Merci de l'info..
mais du coup j'ai copier au lieu de créer un lien symbolique avec le même type de commande

for i in `find /mnt/0p1/ -type d`; do cp -R $i /var/www/media/theme/; done
 


Il me retourne ...


cp: impossible d'évaluer « server/www/websites/OpenUpload/www »: Aucun fichier ou dossier de ce type
cp: impossible d'évaluer « /mnt/0p1/Tmp/backup »: Aucun fichier ou dossier de ce type
cp: impossible d'évaluer « server/www/websites/OpenUpload/www/plugins »: Aucun fichier ou dossier de ce type
cp: impossible d'évaluer « /mnt/0p1/Tmp/backup »: Aucun fichier ou dossier de ce type
cp: impossible d'évaluer « server/www/websites/OpenUpload/www/templates »: Aucun fichier ou dossier de ce type
cp: impossible d'évaluer « /mnt/0p1/Tmp/backup »: Aucun fichier ou dossier de ce type
cp: impossible d'évaluer « server/www/websites/OpenUpload/www/templates/default »: Aucun fichier ou dossier de ce type
 



Que faire ?
Merci d'avance

Hors ligne

#14 12-04-2017 06:38:17

Severian
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 4.9.0-0.bpo.1-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

si je ne me trompe pas, tu viens de copier tous les réperetoires et leur contenue trouvé avec find vers /var/www/media/theme/
et il me semble que c'est l'inverse que tu veux

"il est urgent d'attendre" (bendia)
ob3-de10.pngbanner98x30.png

Hors ligne

#15 12-04-2017 09:15:19

vv222
Modérateur
Lieu : Bretagne
Distrib. : GNU/Linux Debian « Sid »
Noyau : >= Linux 4.9.0 (amd64)
(G)UI : Openbox + ROX
Inscription : 18-11-2013
Site Web

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Tu as des espaces dans des noms de répertoires apparemment, en particulier un répertoire "/mnt/0p1/Tmp/backup server/".

Jouer sous Debian ? Facile !

Hors ligne

#16 12-04-2017 14:17:21

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Effectivement c'était les espaces qui faisait tout bug .. j'ai tout renommé sans espace et tout marche impeccable avec la commande suivante :

for i in `find /mnt/0p1/* -type d`; do cp -Rf /var/www/media/theme/ $i; done



mon dossier theme est bien copié dans tout les sous-répertoires de /mnt/0p1

Merci à tous pour vos réponses !

Hors ligne

#17 12-04-2017 15:09:10

raleur
Membre
Inscription : 03-10-2014

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Il suffisait d'entourer $i avec des guillemets doubles "$i" pour que les espaces ne posent pas de problème.

Dommage d'avoir dû faire une copie au lieu de simples liens.
NTFS supporte les liens symboliques et normaux (créés sous Windows avec les commandes fsutil et mklink), mais je n'ai pas trouvé de commande pour les créer sous GNU/Linux.
Y a-t-il une raison particulière pour que ce système de fichiers soit en NTFS ?

Dernière modification par raleur (12-04-2017 15:10:52)

Hors ligne

#18 12-04-2017 15:46:35

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

J'ai galérer à tout renommé pour rien sad xD
C'est pas grave en tout cas j'ai pu utiliser la commande :

for i in `find /mnt/0p1/* -type d`; do ln -s /mnt/0p1/theme/ $i; done



Il fallait juste que le dossier theme soit dans le meme disque.

Je pense que le disque est en ntfs à cause du partage samba que j'ai mis en place ? J'en suis pas sur du tout x)

Hors ligne

#19 12-04-2017 16:08:26

raleur
Membre
Inscription : 03-10-2014

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

anticore a écrit :

J'ai galérer à tout renommé pour rien


Non, pas pour rien. Les espaces dans les noms de fichiers et répertoires, c'est connu pour causer plein de problèmes donc c'est à éviter.

anticore a écrit :

en tout cas j'ai pu utiliser la commande


Je croyais avoir lu plus haut que la création de liens symboliques sur NTFS n'était pas possible ?

anticore a écrit :

Il fallait juste que le dossier theme soit dans le meme disque.


Normalement un lien symbolique n'a pas cette exigence. La cible du lien n'a même pas besoin d'exister. C'est peut-être une particularité de NTFS.

Un petite recommandation concernant le chemin de la cible quand elle est dans le même système de fichiers : il vaut mieux spécifier un chemin relatif (au répertoire du lien), cela rend le lien indépendant du point de montage.

anticore a écrit :

Je pense que le disque est en ntfs à cause du partage samba que j'ai mis en place


Un partage samba n'a pas du tout besoin de NTFS.

Dernière modification par raleur (12-04-2017 16:11:27)

Hors ligne

#20 12-04-2017 16:15:04

anticore
Membre
Distrib. : Debian GNU/Linux 8.7 (jessie)
Noyau : Linux 3.16.0-4-amd64
Inscription : 11-04-2017

Re : Créer plusieurs liens symboliques dans un dossier et ses sous-dossier

Je croyais aussi qu'il était impossible de créer des liens sur un disque en ntfs mais en fait non...

Du coup je sais pas pourquoi j'ai mis le disque en ntfs mais peut importe maintenant tout marche smile

Hors ligne

Pied de page des forums