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 11/03/2013, à 10:12

Arbiel

retrouver la partition sur laquelle réside un fichier

Bonjour à tous

Existe-t-il un moyen simple de retrouver le chemin d'accès à un fichier depuis la partition où il réside en connaissant un chemin d'accès à ce fichier ?

Exemple : un répertoire /media/partition/répertoire1/répertoire2 est monté sur /toto/dossier. Je cherche à retrouver la chaîne /repertoire1/répertoire2/fichier à partir du chemin /toto/dossier/fichier,

1) sachant que /toto/dossier/fichier n'est pas un lien symbolique vers un autre fichier.
2) même si /toto/dossier/fichier est un lien symbolique

Merci d'avance à qui voudra bien me mettre sur la voie.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#2 Le 11/03/2013, à 10:26

JoelS

Re : retrouver la partition sur laquelle réside un fichier

mount -l

seulement il y a tellement de façon d'avoir une partition montée sur un répertoire que gérer tous les cas via la récupération de mount -l me parait un sacré travail....

Hors ligne

#3 Le 11/03/2013, à 10:33

claudius01

Re : retrouver la partition sur laquelle réside un fichier

Bonjour,

Peut-être

df

cf. man df et df (Unix)


Cordialement, A+
--
Claudius

Hors ligne

#4 Le 11/03/2013, à 10:49

credenhill

Re : retrouver la partition sur laquelle réside un fichier

hello
je dirais même plus

df .

Hors ligne

#5 Le 11/03/2013, à 13:01

Arbiel

Re : retrouver la partition sur laquelle réside un fichier

Bonjour

Je vous remercie, mais je n'ai pas été clair dans ma question.

Il ne s'agit pas de passer une commande et d'en interpréter le contenu pour obtenir ce que je cherche, mais de programmer la recherche du chemin d'accès, ou d'un des chemins, dans le cas de liens physiques (hardlinks) à un fichier dans la partition où il se trouve.

Je pense qu'il conviendrait de passer par l'inode du fichier, mais je ne sais pas comment faire d'une part pour obtenir l'inode, et d'autre pat pour obtenir l'ensemble des chemins vers l'inode. Je pense, la liste de ces chemins ayant été établie, le problème que je me pose est à peu près résolu.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#6 Le 11/03/2013, à 14:42

grim7reaper

Re : retrouver la partition sur laquelle réside un fichier

Salut,

Arbiel a écrit :

mais je ne sais pas comment faire d'une part pour obtenir l'inode

Il existe une commande, stat, qui peut te donner cette info :

stat -c %i CMakeCache.txt
527454

Cf. man 1 stat
Si tu veux coder ça, en admettant que tu fasses du C, il y a la fonction POSIX du même nom : cf. man 2 stat.
Si tu fais du Python, cf. os.stat

Arbiel a écrit :

d'autre pat pour obtenir l'ensemble des chemins vers l'inode.

Il y a bien à coup de find -inum (ou -samefile), mais ça risque d‘être un peu lent…

Hors ligne

#7 Le 11/03/2013, à 14:44

credenhill

Re : retrouver la partition sur laquelle réside un fichier

stat pour obtenir l'inode et find

find -inum $(stat -c %i fichier) -ls

Hors ligne

#8 Le 11/03/2013, à 17:46

Arbiel

Re : retrouver la partition sur laquelle réside un fichier

@ credenhill

Merci pour ces informations, qui répondent à mon problème, même en bash, seul langage que je pratique un peu. Mais on m'a déjà recommandé de coder en Python. Je vais peut-être m'y mettre. Mais n'est-ce pas trop difficile à apprendre ?

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#9 Le 12/03/2013, à 08:44

credenhill

Re : retrouver la partition sur laquelle réside un fichier

je pense qu'il faut envisager le Pyhon pour faire ce que ne peut pas faire bash, et il peut faire beaucoup

l'option find -L -samefile fichier permet d'éviter le stat et de trouver tous les hard et soft links sur fichier

Dernière modification par credenhill (Le 12/03/2013, à 08:52)

Hors ligne

#10 Le 13/03/2013, à 12:42

Arbiel

Re : retrouver la partition sur laquelle réside un fichier

Bonjour

J'ai effectivement trouvé l'option -samefile de find. Entretemps, j'ai commencé à m'informer sur Python.

Merci pour les informations que tu m'as communiquées.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#11 Le 13/03/2013, à 13:09

Haleth

Re : retrouver la partition sur laquelle réside un fichier

Mouais, sauf que le numéro d'inode est unique pour une partition.
Avec plusieurs partitions, tu peux donc avoir plusieurs fichiers qui correspondent au même inode.


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#12 Le 13/03/2013, à 16:07

Arbiel

Re : retrouver la partition sur laquelle réside un fichier

Bonjour Haleth

Oui, je suis bien conscient de cette possibilité. Et chercher sur toute la configuration peut aussi être pénalisant.

Voilà la manière dont je m'y suis pris pour résoudre ce problème

function iso_fichier () {
###########################################################
# Calcul du nom de fichier pour grub
##########################################################	
	bsd=$(df "${1}"  | grep -o "^/dev/sd[a-z][1-9][0-9]*")
	montage=$(mount | grep -o "^${bsd} .* *type")
	partition=${montage%%+( )type}
	partition=${partition##${bsd} on+( )}
	if ! [ "${partition}" = "/" ]; then
		linux_nom=$(sudo find -H "${partition}" -samefile "${1}" | grep -m 1 "${partition}")
		echo "${linux_nom#${partition}}"
	else
		echo "${1}"
	fi

Cette fonction est incluse dans un script qui me permet d'amorcer mon PC avec un fichier iso en utilisant zenity pour localiser le répertoire grub concerné et le fichier iso à utiliser comme amorce.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#13 Le 13/03/2013, à 16:17

Haleth

Re : retrouver la partition sur laquelle réside un fichier

Exemple : un répertoire /media/partition/répertoire1/répertoire2 est monté sur /toto/dossier. Je cherche à retrouver la chaîne /repertoire1/répertoire2/fichier à partir du chemin /toto/dossier/fichier,

Tu pratiques le mount -B ?


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#14 Le 14/03/2013, à 09:24

Arbiel

Re : retrouver la partition sur laquelle réside un fichier

Bonjour

Haleth a écrit :

Tu pratiques le mount -B ?

Oui, cela m'arrive, mais je reconnais que c'est parfois dangereux car cela amène à ne plus savoir exactement dans quelle partition physique se trouvent tels ou tels fichiers et répertoires.

Je l'utilise dans le cadre du développement d'une petite application que je teste dans ma configuration personnelle avant de l'installer sur les configurations cibles, dans lesquelles l'organisation logique des répertoires n'est pas la même. L'utilisation de mount avec l'option --bind permet d'éviter le renommage des chemins d'accès aux fichiers.

A l'usage, je pense que la solution aurait dû être de définir des variables et d'initialiser ces variables en fonction de l'organisation des répertoires. Mais ce qui est fait est fait, et tout reprendre pour appliquer cette autre règle me semble trop long, pour un intérêt somme toute limité.

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne