Come ottenere informazioni sul filesystem per un file specifico?


8

Qual è il modo migliore per scoprire informazioni sul file system su un file.

Ad esempio, se ho un file

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

E /etc/fstabcontiene

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

Come posso determinare se il file si trova su una condivisione Samba, che ha il percorso locale /path/to/file.exte con quali opzioni è stato montato il file system?

Analizzare l'output di mountuna soluzione portatile? O analizzare findmnt? Esiste un modo conforme a POSIX per raggiungere questo obiettivo?


df /path/to/filedovrebbe mostrare la partizione o il mount.
giovedì

Grazie @thrig, questo è il primo passo. Quale sarebbe il modo migliore per ottenere informazioni come le opzioni di montaggio da lì?
Kba sta con Monica il

Su Linux, posso analizzare /proc/mounts. Esiste un modo compatibile BSD / OSX per ottenere lo stesso?
Kba sta con Monica il

solo guardando i file? non puoi! questa è la bellezza se i sistemi operativi unix-like, le applicazioni possono accedervi usando il percorso indipendentemente dalla loro posizione fisica
Edward Torvalds,

@edwardtorvalds No, non solo guardando i file, ecco perché ho chiesto informazioni sull'analisi, mountecc. per ottenere filesystem e opzioni, ecc. Non sono ancora sicuro del modo migliore per trovare queste informazioni in * BSD e OSX. Non ho avuto il tempo di lavorare sulla libreria che lo richiede, ma una volta fatto avrò un feedback. Da quello che ho visto, mount -Psembra abbastanza affidabile su Linux / BSD.
Kba sta con Monica il

Risposte:


1

stat (1) è un modo portatile per scoprire alcune di queste informazioni, ad esempio:

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

Tutto il resto è molto specifico del sistema operativo, sui recenti sistemi Linux che puoi facilmente usare findmnt --outputin uno script.


statè anche specifico del sistema operativo.
don_crissti

0

se ho capito bene le tue necessità e combinando i bit delle risposte precedenti, potrebbe essere quello che ti serve. definire nello script (ad esempio, nel tuo .bashrc) -

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

e quindi puoi eseguirlo secondo necessità

findpart /foo/file.ext

findmntnon ha bisogno di tutte quelle cose, può fare tutto da solo
don_crissti

teoricamente si. in pratica, non sono riuscito a far funzionare -T su centos 6, mentre questa soluzione funziona.
Gil Shabtai,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.