Làm thế nào để có được thông tin hệ thống tập tin cho một tập tin cụ thể?


8

Cách tốt nhất để tìm hiểu thông tin hệ thống tập tin về một tập tin.

Ví dụ: nếu tôi có một tập tin

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

/etc/fstabchứa

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

Làm cách nào tôi có thể xác định rằng tệp nằm trong chia sẻ Samba, rằng nó có đường dẫn cục bộ /path/to/file.extvà với các tùy chọn nào mà hệ thống tệp được gắn?

Là phân tích đầu ra của mountmột giải pháp di động? Hay phân tích findmnt? Có cách nào tuân thủ POSIX để đạt được điều đó không?


df /path/to/filenên hiển thị phân vùng hoặc gắn kết.
thrig

Cảm ơn @thrig, điều đó làm cho bước đầu tiên. Điều gì sẽ là cách tốt nhất để có được thông tin như tùy chọn gắn kết từ đó?
kba đứng với Monica

Trên Linux, tôi có thể phân tích cú pháp /proc/mounts. Có cách nào tương thích BSD / OSX để đạt được điều tương tự không?
kba đứng với Monica

chỉ bằng cách nhìn vào tập tin? bạn không thể đó là vẻ đẹp nếu các hệ điều hành giống như unix, các ứng dụng có thể truy cập chúng bằng cách sử dụng đường dẫn bất kể vị trí thực của chúng
Edward Torvalds

@edwardtorvalds Không, không chỉ bằng cách xem các tệp, đó là lý do tại sao tôi hỏi về phân tích cú pháp, mountv.v. để lấy hệ thống tệp và các tùy chọn, v.v. Tôi vẫn không chắc chắn về cách tốt nhất để tìm thông tin này trong * BSD và OSX. Tôi đã không có thời gian để làm việc trên thư viện yêu cầu điều này nhưng sẽ phản hồi một khi tôi làm. Từ những gì tôi thấy, mount -Pcó vẻ khá đáng tin cậy trên Linux / BSD.
kba đứng với Monica

Câu trả lời:


1

stat (1) là một cách di động để tìm hiểu một số thông tin này, ví dụ:

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

Mọi thứ khác đều rất đặc trưng cho hệ điều hành, trên các hệ thống Linux gần đây, bạn có thể dễ dàng sử dụng findmnt --outputtrong một tập lệnh.


statcũng là os cụ thể.
don_crissti 10/03/2016

0

nếu tôi hiểu chính xác nhu cầu của bạn và kết hợp các bit từ các câu trả lời trước, thì đây có thể là những gì bạn cần. xác định trong tập lệnh (ví dụ: trong .bashrc của bạn) -

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

và sau đó bạn có thể chạy nó khi cần thiết

findpart /foo/file.ext

findmntkhông cần tất cả những thứ đó, nó có thể tự làm tất cả
don_crissti 10/03/2016

về mặt lý thuyết, vâng. trong thực tế, tôi không thể có được - để làm việc trên centos 6, trong khi giải pháp này thì có.
Gil Shabtai
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.