0
votes

Comment identifier un HardLink à l'aide de Python?

J'aimerais savoir s'il est possible d'identifier si un fichier (ou un lien) est un HardLink em> ou non, sous Linux. Par exemple, si j'ai créé:

if is_hardlink("file_10MB_link1"):
    pass


0 commentaires

3 Réponses :


2
votes

Je pense que vous recherchez des "fichiers qui ont un compte de liaison supérieure à 1"

pour que vous puissiez utiliser: xxx


6 commentaires

Je pense qu'il veut une fonction qui sera vraie pour file_10mb_link1 mais false pour file_10mb . Vérification du nombre de liens ne fera pas cela, puisqu'ils retourneront tous les deux st_nlink == 2


@Barmar il n'y a pas une telle chose - ils sont la même inode


Je sais, c'est ce que j'ai dit dans ma réponse.


J'apprécie vos réponses, mais comme @Barmar a dit, j'ai besoin d'identifier un HardLink, sans compter les nœuds, sinon, je devrai vérifier chaque fichier pour chaque dossier. On dirait qu'il n'y a pas de bonne option pour ce cas, je vais donc accepter le code. Merci beaucoup!


Essayez-vous de savoir s'il s'agit d'un lien dur avec un fichier spécifique? Vous pouvez vérifier les numéros de périphérique et d'inode pour voir s'ils sont les mêmes.


Je vois que c'est que je cherche!



1
votes

Non, ce n'est pas possible. Rien qui distingue le fichier d'origine de la liaison dure. Ils ne sont que deux noms qui font référence au même numéro d'inode, qui représente le contenu du fichier.

Vous pouvez utiliser le code dans la réponse de Anthony Sottile pour indiquer si le fichier en a plusieurs liens, mais vous ne pouvez pas dire quel est l'original.


0 commentaires

0
votes

La réponse est que cela dépend du système de fichiers et strong> (exact) que vous utilisez. Par exemple, si vous utilisez NTFS (bien que peu probable dans un contexte linux natif), il permet une large gamme de NTFS spécifique fonctionnalités em> y compris hardlinks em> et jonctions em>. Donc, alors que dans les fenêtres, ils utilisent des numéros de liaison pour les hardlinks, utiliser Linux OS Utilisez Inodes.

Vous auriez besoin de pilotes de noyau spécifiques ou d'un système de recherche médico-légal pour pouvoir lire tous ceux-ci, car normal em> Linux utilise uniquement inodes em> et il faudrait être compté et l'horodatage analysé pour décider quel est le fichier d'origine par rapport à un (s) ligné (s) créé (s) créé (s) (s) p>

comme python peut créer des deux HardLinks et softlinks em > VIA: p>

os.link()    # Create a hard link
os.symlink() # Create a symbolic link


0 commentaires