Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 23/02/2010, 12h49   #1
Invité de passage
 
Inscription : février 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 5
Points : 0
Points : 0
Par défaut Besoin d'aide sur une commande

Bonjour à tous,
Completement néophyte dans le domaine Linux, j'aimerais savoir si une chose est possible.
Je travaille dans un centre de formation et met à disposition des eleves a distance des dossiers comprenant leur cours via une platteforme dedibox geré sous fedora en passant par la console putty.
chaque eleve possede un espace personel comprenant un dossier multimedia dans lequel sont copiés les dossiers via un lien dur.
voici la ligne que j'utilise pour generer le lien /

cp -l -r /home/audreco/multimedia/0000 /aud-xxx/multimedia

je voulais savoir si je pouvais copier en une seule fois plusieur lien dur ?

sachant que j'ai essayer de mettre les fichier à la suite, mais ça ne fonctionne pas et que je n'y connais rien en programetion de batch ou de shell...

Merci d'avance pour votre aide.
debutant75013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2010, 13h41   #2
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 896
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 896
Points : 3 676
Points : 3 676
cp -l ne fait que copier des liens symboliques vers des liens symboliques au lieu de copier le fichier lié vers un fichier, et ne copie pas des fichiers vers des liens symboliques.

La création de liens symboliques s'effectue via la commande ln -s /chem1/source /chem2/destination
Les liens durs ne sont utilisés que par le système, jamais par les utilisateurs, même root.

Tu peux avoir plusieurs sources (en utilisant les différents développements, et autres motifs génériques), mais qu'une seule destination.
par exemple:
cp ?ass* monRep/
copiera
casse-tête
password

vers monRep
mais pas tracasseries, parce que
Citation:
Envoyé par man bash
* Correspond à toute chaîne, y compris la chaîne vide.
? Correspond à n'importe quel caractère
ou alors il faut passer par une boucle...
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2010, 13h47   #3
Invité de passage
 
Inscription : février 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 5
Points : 0
Points : 0
ok
sinon il faut genere une boucle et dire d'effectuer la boucle pour une liste de fichier donné ?
comment peut on faire ça ?
en tout cas merci pour les explication je comprend mieux le principe.
en fait tu vois j'y connais vraiment rien. lol
le fait est que par soucis d'economie de place , comme ce sont souvent les meme fichier qui sont copiers on ne fait que creer des liens vers ces ficiers (si j'ai bien tout compris)
debutant75013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2010, 14h09   #4
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 896
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 896
Points : 3 676
Points : 3 676
en fait, tout dépend comment est organisée l'arborescence à "copier", mais en gros:
Code :
1
2
3
4
for user in 0{0{1..9},{10..20}}; do
#echo pour l'exemple :
   echo "ln -s /home/audreco/multimedia /aud-${user}/multimedia"
done
...
?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2010, 14h17   #5
Invité de passage
 
Inscription : février 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 5
Points : 0
Points : 0
super,
merci je vais tenter ça.
debutant75013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2010, 16h11   #6
Modérateur
 
Inscription : octobre 2008
Messages : 1 440
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 440
Points : 1 924
Points : 1 924
Il y a quand même une différence notable entre la situation initiale avec les liens en dur et la solution avec les liens symboliques.
Avec un lien symbolique, si la source du lien disparait, le contenu disparait physiquement et le lien ne sert plus à rien.
Avec des liens en dur, le contenu ne disparait que si plus personne n'a plus aucun lien dessus.
Autrement dit si un de ces fichiers est effacé à la source, avec les liens en dur les autres utilisateurs ne s'en rendront pas compte, alors qu'avec les liens symboliques, plus personne n'accédera au fichier. Ca peut être une bonne chose ou pas, mais il faut choisir en connaissance de cause.

Citation:
Les liens durs ne sont utilisés que par le système, jamais par les utilisateurs, même root.
C'est un avis subjectif, car la doc des commandes ln ou cp n'indique aucune restriction de ce style. Libre à chacun d'utiliser les liens en dur quand ils sont utiles.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2010, 16h52   #7
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 896
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 896
Points : 3 676
Points : 3 676
Ah, ah ! donc debutant75013 avait raison de dire qu'il créait des liens en dur avec cp -l

J'admet ne pas être très au clair avec les liens en dur : tant ls -l, que stat, ou readlink, ne permettent pas de les distinguer d'une simple copie...

Citation:
Envoyé par estofilo
Citation:
Envoyé par N_BaH
Les liens durs ne sont utilisés que par le système, jamais par les utilisateurs, même root.
C'est un avis subjectif, car la doc des commandes ln ou cp n'indique aucune restriction de ce style. Libre à chacun d'utiliser les liens en dur quand ils sont utiles.
J'ai fait un amalgame avec :
Citation:
Envoyé par man ln
d, -F, --directory
permettre au superutilisateur de créer des liens directs (« hard links ») sur des répertoires (note : ceci échouera probablement en raison de restrictions système même pour le superutilisateur)
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2010, 17h42   #8
Modérateur
 
Inscription : octobre 2008
Messages : 1 440
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 440
Points : 1 924
Points : 1 924
ls -l permet de savoir, via le compteur de références, qu'un fichier a plusieurs exemplaires au contenu physiquement identique (=liens durs).
Par exemple dans le /bin du système sur lequel j'écris
Citation:
$ ls -l bzip2
-rwxr-xr-x 3 root root 30140 2008-11-10 12:51 bzip2
le nombre 3 en 2ème colonne indique que ce fichier existe sous 3 références différences.
Si je veux trouver les 2 autres, la méthode que je connais est de passer par le numéro d'inode (je ne sais pas s'il y a plus simple):
Citation:
$ ls -i bzip2
671807 bzip2
$ find . -inum 671807
./bzip2
./bzcat
./bunzip2
Et voilà mes 3 fichiers qui n'en font qu'un au niveau du contenu. Le lien dur n'est pas une relation source->destination mais une relation d'équivalence de contenu.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2010, 19h15   #9
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 896
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 896
Points : 3 676
Points : 3 676
c'est un peu moins flou, je vais continuer de me documenter...

Merci estofilo.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 04h02.


 
 
 
 
Partenaires

Hébergement Web