Joseph Tux
magie de cp -la

La puissance de cp -la

Créer les liens physiques d’une arborescence
vendredi 6 novembre 2009

cp -la d1/* d2/ recopie l’arborescence des répertoires puis crée les liens physiques des fichiers !
Dans cet exemple : lie tous les fichiers [1] sous d1/ dans les répertoires créés directement dans le répertoire d2/
L’arborescence créée est : d2/* ( Il n’y a pas création de de d1/ sous d2/ )

cp -la d1 d2/ créera d’abord le répertoire d1 et ses sous répertoires avant de lier les fichiers : d2 contient la copie de d1
L’arborescence créée est d2/d1/*
Dans cet exemple, le répertoire d1 est désigné sans « / » final

cp -la d1 d2 créera le répertoire d2 avec les mêmes sous-répertoires avant de lier les fichiers : d2 est une copie de d1
L’arborescence créée est d2/*

cp -la

Il n’est question ici que de liens physiques

ln f1 f2 crée le lien f2 sur le fichier f1 = il lui attribue un « 2e nom » (
nom complet, le chemin faisant partie du nom )

2 limites :

  • la première n’en est pas vraiment une : ne pas oublier que cela n’a de sens que sur le même système de fichier ( la même partition )
  • la deuxième : un répertoire ne peut pas être lié « en dur » [2] [3]

Pour lier une arborescence il faut donc recréer toute l’arborescence des répertoires [4], puis lier les fichiers dans chacun d’eux [5].

Celà semble bien compliqué ! ( c’est ce que j’ai pensé dans l’instant )
La solution est très simple :

cp -la

cp -l f1 f2 fait la même chose que ln f1 f2

cp -a d1/* d2/ recopie l’arborescence de d1/ dans d2/
cp -a d1/.* d2/ recopie l’arborescence de d1/ dans d2/

pour que « d1 » , de l’arobersecnece « ./../d1 » soit intégralement copié et son contenu lié, la commande est :

cp -a d1 d2/ recopie l’arborescence de d1/ dans d2/

sans le slash « / » final.

Résultat :
cp -la d1/* d2/ recopie l’arborescence des répertoires et y crée les liens des fichiers ! [6]

mount -B

extraits de : {man mount}

La suite est à vérifier : je ne suis pas sur d’avoir tout compris

Depuis Linux 2.4.0, il est possible de remonter une partie de la hiérarchie des fichiers ailleurs, si celle-ci représente un volume (= une partition)

L’appel est :

  • option longue : mount - -bind ancien_répertoire nouveau_répertoire
  • option courte :  mount -B ancien_répertoire nouveau_répertoire
  • entrées fstab : /ancien_répertoire /nouveau_répertoire none bind

À la suite de cet appel, le même contenu est accessible en deux endroits.
On peut également remonter un fichier unique (sur un fichier unique).

On ne peut pas modifier les options de montage d’origine, mais on peut par un remontage modifier celles du 2nd montage [7] !

Cet appel peut donc s’appliquer à une arborescence (presque) complète, ou à un simple fichier.
Cet appel ne prend pas en compte des sous-montages de l’arborescence initiale.

Cet appel à mount fait évidemment penser à une forme de lien physique, et donc une alternative à cp -la
Une première différence, puisque c’est un « montage », est que le répertoire de montage doit d’abord exister ( être créé ).

[1non cachés, identifiés par « * »

[2Il ne peut avoir qu’un seul nom

[3des liens symboliques sont possibles, mais « fragiles »

[4cp -a

[5cp -l

[6même nom de base, le répertoire initial étant d2 au lieu de d1

[7Extrait de la page man :
..vous devez aussi utiliser l’attribut (ou l’option) bind de la commande remount.
Par exemple :
mount --bind ancien_répertoire nouveau_répertoire
mount -o remount,ro,bind ancien_répertoire nouveau_répertoire

Remarquez que remount,ro,bind créera un point de montage en lecture seule (entrée VFS), mais que le superbloc du système de fichiers d’origine sera toujours accessible en écriture, ce qui signifie que l’ancien_répertoire sera accessible en écriture, mais que le nouveau_répertoire sera en lecture seule.


Accueil | Contact | Plan du site | | Statistiques du site | Visiteurs : 133 / 59180

Suivre la vie du site fr  Suivre la vie du site GNU, LINUX, BSD, LL  Suivre la vie du site AIDES GNU/LINUX  Suivre la vie du site Administration : astuces, stratégies   ?

Site réalisé avec SPIP 3.1.6 + AHUNTSIC

Creative Commons License