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?

kba berdiri dengan Monica
sumber
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.

Marco d'Itri
sumber
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
Gil Shabtai
sumber
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