Saya punya skrip cadangan yang ditulis dengan Python yang membuat direktori tujuan sebelum menyalin direktori sumber ke sana. Saya telah mengonfigurasinya untuk digunakan /external-backup
sebagai tujuan, yang merupakan tempat saya memasang hard drive eksternal. Saya hanya menjalankan skrip tanpa hard drive dinyalakan (atau sedang dipasang) dan menemukan bahwa itu berfungsi seperti biasa, meskipun membuat cadangan pada hard drive internal, yang tidak memiliki ruang yang cukup dekat untuk mendukungnya.
Pertanyaan saya adalah: bagaimana saya bisa memeriksa apakah volume sudah dipasang di tempat yang tepat sebelum menulis? Jika saya dapat mendeteksi yang /external-backup
tidak dipasang, saya dapat mencegah menulisnya.
Pertanyaan bonusnya adalah mengapa ini diizinkan, ketika OS tahu direktori itu seharusnya hidup di perangkat lain, dan apa yang akan terjadi pada data (pada hard drive internal) jika saya nanti memasang perangkat itu (hard drive eksternal)? Jelas tidak ada dua salinan pada perangkat yang berbeda di jalur yang sama!
Terima kasih sebelumnya!
/external-backup
tidak hidup di perangkat eksternal, ia hidup di sistem file induk. Sistem hanya tahu apa yangmount
memberitahukannya, tidak tahu apa yang seharusnya ada di sana. Tidak ada yang istimewa tentang "mount point" pada sistem file Unix. Itu hanya direktori biasa.Untuk jawaban pasti atas sesuatu yang hanya diketahui oleh kernel, tanyakan pada kernel:
File itu dapat dibaca / diurai seperti file biasa, menggunakan alat apa pun yang Anda suka. Termasuk Python. Contoh cepat-n-kotor:
sumber
Cara termudah untuk memeriksa adalah memohon
mount
melaluisubprocess
dan melihat apakah itu muncul di sana. Untuk kredit tambahan, gunakanos.readlink()
pada konten/dev/disk/by-*
untuk mengetahui perangkat apa itu.sumber
mount
sloppily didefinisikan dengan paling baik. Apa artinyamount
output jika saya sudah mount/dev/evil device on tour
di/directory on which I mount devices
? Penguraian output mungkin tidak dapat diandalkan dalam kasus-kasus seperti ...Jawaban bonus. Jika perangkat eksternal tidak dipasang data ditulis ke root partisi di jalur
/external-backup
. Jika perangkat eksternal dipasang data pada partisi root masih ada tetapi tidak dapat dijangkau karena/external-backup
sekarang menunjuk ke perangkat eksternal.sumber
Pertanyaan lama, tapi saya pikir saya akan berkontribusi solusi saya (berdasarkan jawaban Dennis Williamson dan Ignacio Vazquez-Abrams ). Karena saya menggunakannya pada lingkungan non-Linux untuk memeriksa direktori remote yang sedang di-mount, / proc dan mtab tidak dapat digunakan dan tidak ada pemeriksaan tambahan yang telah dilaksanakan:
Selamat datang, perbaikan!
sumber
File / etc / mtab ada untuk memberi tahu Anda apa yang sedang di-mount. Ada
getmntent
panggilan, tapi saya pikir itu tidak diekspor dalamos
modul. Cepat dan kotor? Buka / etc / mtab dan split. Pastikan perangkat Anda ada di kolom 0 dan titik pemasangan tujuan di kolom 1 sudah benar.sumber