J'ai un script de sauvegarde écrit en Python qui crée le répertoire de destination avant d'y copier le répertoire source. Je l'ai configuré pour l'utiliser /external-backup
comme destination, c'est là que je monte un disque dur externe. Je viens d'exécuter le script sans que le disque dur ne soit allumé (ou monté) et j'ai constaté qu'il fonctionnait normalement, bien qu'il fasse une sauvegarde sur le disque dur interne, qui n'a nulle part assez d'espace pour se sauvegarder.
Ma question est: comment puis-je vérifier si le volume est monté au bon endroit avant d'y écrire? Si je peux détecter que ce /external-backup
n'est pas monté, je peux empêcher d'y écrire.
La question supplémentaire est de savoir pourquoi cela a été autorisé, alors que le système d'exploitation sait que le répertoire est censé vivre sur un autre appareil, et qu'arriverait-il aux données (sur le disque dur interne) si je montais plus tard cet appareil (le disque dur externe)? De toute évidence, il ne peut pas y avoir deux copies sur différents appareils sur le même chemin!
Merci d'avance!
/external-backup
ne vit pas sur un périphérique externe, il vit sur le système de fichiers parent. Le système ne sait que cemount
qu'il dit, il n'a aucune idée de ce qui devrait y être. Il n'y a rien de spécial à propos d'un "point de montage" sur un système de fichiers Unix. C'est juste un répertoire régulier.Pour une réponse définitive à quelque chose que seul le noyau sait, demandez au noyau:
Ce fichier peut être lu / analysé comme s'il s'agissait d'un fichier normal, en utilisant les outils que vous aimez. Y compris Python. Exemple Quick-n-dirty:
la source
Le moyen le plus simple de vérifier est d'appeler
mount
viasubprocess
et de voir s'il apparaît là-bas. Pour un crédit supplémentaire, utilisezos.readlink()
le contenu de/dev/disk/by-*
pour déterminer de quel appareil il s'agit.la source
mount
est définie au mieux. Qu'est-ce que lamount
sortie si j'ai monté/dev/evil device on tour
à/directory on which I mount devices
? L'analyse de la sortie peut ne pas être fiable dans de tels cas ...Réponse bonus. Si le périphérique externe n'est pas monté, les données sont écrites sur la partition racine au chemin
/external-backup
. Si un périphérique externe est monté, les données sur la partition racine sont toujours là mais elles ne sont pas accessibles car elles/external-backup
pointent maintenant vers le périphérique externe.la source
Vieille question, mais j'ai pensé apporter ma solution (basée sur la réponse de Dennis Williamson et Ignacio Vazquez-Abrams ) de toute façon. Comme je l'utilise sur un environnement non Linux pour vérifier les répertoires distants en cours de montage, / proc et mtab ne peuvent pas être utilisés et aucune vérification supplémentaire n'a été implémentée:
Améliorations bienvenues!
la source
Le fichier / etc / mtab existe pour vous dire ce qui est actuellement monté. Il y a un
getmntent
appel, mais je ne pense pas qu'il soit exporté dans leos
module. Le rapide et sale? Ouvrez / etc / mtab et divisez. Assurez-vous que votre appareil est présent dans la colonne 0 et que le point de montage de destination dans la colonne 1 est correct.la source