Bagaimana cara mendapatkan info sistem file untuk file tertentu?


8

Apa cara terbaik untuk mengetahui informasi sistem file tentang file.

Misalnya, jika saya punya file

/media/xyz/path/to/file.ext

Dan /etc/fstabberisi

//server1/Share1 /media/xyz cifs option1=value1,...

Bagaimana saya bisa menentukan bahwa file tersebut pada share Samba, bahwa ia memiliki jalur lokal /path/to/file.extdan dengan opsi apa sistem file dipasang?

Apakah mengurai output dari mountsolusi portabel? Atau parse findmnt? Apakah ada cara yang sesuai dengan POSIX untuk mencapai itu?


df /path/to/fileharus menunjukkan partisi atau mount.
mulai

Terima kasih @ thrig, itu membuat langkah pertama. Apa cara terbaik untuk mendapatkan info seperti opsi pemasangan dari sana?
Kba berdiri dengan Monica

Di Linux, saya bisa menguraikan /proc/mounts. Apakah ada cara yang kompatibel dengan BSD / OSX untuk mencapai hal yang sama?
Kba berdiri dengan Monica

hanya dengan melihat file? kamu tidak bisa! itu adalah keindahan jika sistem operasi unix-like, aplikasi dapat mengaksesnya dengan menggunakan jalur terlepas dari lokasi fisik mereka
Edward Torvalds

@edwardtorvalds Tidak, tidak hanya dengan melihat file, itu sebabnya saya bertanya tentang parsing mountdll untuk mendapatkan filesystem dan opsi dll. Saya masih tidak yakin tentang cara terbaik untuk menemukan informasi ini di * BSD dan OSX. Saya belum punya waktu untuk bekerja di perpustakaan yang membutuhkan ini tetapi akan memberikan umpan balik begitu saya melakukannya. Dari apa yang saya lihat, mount -Ptampaknya cukup dapat diandalkan di Linux / BSD.
Kba berdiri dengan Monica

Jawaban:


1

stat (1) adalah cara portabel untuk mengetahui beberapa informasi ini, misalnya:

stat --file-system --format="%T" /media/xyz/path/to/file.ext

Yang lainnya sangat spesifik untuk OS, pada sistem Linux terkini Anda dapat dengan mudah menggunakan findmnt --outputskrip.


statjuga os-spesifik.
don_crissti

0

jika saya memahami kebutuhan Anda dengan benar, dan menggabungkan bit dari jawaban sebelumnya, berikut ini yang mungkin Anda butuhkan. tentukan dalam skrip (misalnya, dalam .bashrc Anda) -

findpart ()
{
df -h $1|sed 1d|cut -d" " -f1|xargs findmnt -n
}

dan kemudian Anda bisa menjalankannya sesuai kebutuhan

findpart /foo/file.ext

findmnttidak memerlukan semua hal itu, ia dapat melakukan ini dengan sendirinya
don_crissti

secara teoritis, ya. dalam praktiknya, saya tidak bisa mendapatkan -T untuk bekerja pada centos 6, sedangkan solusi ini tidak.
Gil Shabtai
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.