#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
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,
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
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
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