Hệ thống tập tin nào trên Linux lưu trữ thời gian tạo?


32

Có bất kỳ hệ thống tệp (nổi tiếng, đáng tin cậy) nào trên Linux lưu trữ thời gian tạo tệp và thư mục trong bảng i-nút không?

Nếu có, thời gian "thay đổi" có được thay thế bằng thời gian tạo nút i trong lệnh gọi không?



không dường như là một cách để có được thời gian tạo tập tin trong Linux nếu tập tin trên một hệ thống tập tin ext4. Xem: unix.stackexchange.com/a/131347/182996
kaartic

Câu trả lời:


16

Các ext4 hệ thống tập tin không lưu trữ thời gian sáng tạo. stat -c %W myfilecó thể chỉ cho bạn


6
Cảm ơn. Trong hệ thống của tôi stat -c %Wtrả về 0 (thời gian tạo không xác định), nhưng đó là một câu hỏi khác ...
franziskus

1
Nhưng lưu ý rằng do cách các tệp được xử lý bởi nhiều chương trình, giá trị thời gian tạo đó có thể không hữu ích .
mattdm

15
@Legate: nếu trình soạn thảo văn bản hoạt động bằng cách sao chép tệp vào vị trí tạm thời, chỉnh sửa bản sao làm việc tạm thời, sau đó di chuyển bản sao tạm thời so với bản gốc khi lưu, khi nào là thời gian tạo?
mattdm

1
Điều này cần phải được kích hoạt bằng cách nào đó? Tôi đã cố gắng để có được thời gian cho một tệp trên hệ thống tệp ext4 và nhận được số không. Trước đây đã đọc bài đăng trên blog này , tôi cũng đã thử sử dụng debugfsstattiết lộ rằng không có crtime. Vì vậy, tôi tự hỏi nếu nó cần phải được kích hoạt bằng cách nào đó? (FWIW Tôi sử dụng Arch Linux )
starfry

2
không dường như là một cách để có được thời gian tạo tập tin trong Linux. Xem: unix.stackexchange.com/a/131347/182996
kaartic

30

Một số hệ thống tệp lưu trữ thời gian tạo tệp, mặc dù không có tên tiêu chuẩn cho trường này:

  • ufs2 → st_birthtime
  • zfs → crtime
  • ext4 → crtime
  • btrfs → otime
  • jfs → di_otime

5
Để rõ ràng, kể từ 2015-03, XFS không hỗ trợ (xem xfs_dbmanpage hoặc trong Cấu trúc hệ thống tệp XFS
Franklin Piat

4

Theo như tôi biết các hệ thống tệp ext4, JFS và BTRFS đều hỗ trợ một trường bổ sung trong nút inode để lưu trữ thời gian tạo, mặc dù cách đặt tên có thể khác nhau.

Nguồn: Thời gian tạo tập tin LWN


//, Bạn đã có thể xác minh điều này? AFAIK là loại yếu, theo sở thích của tôi, ít nhất.
Nathan Basan

5
@NathanBasan AFAIK đã báo cáo cho JFS và BTRFS. Đối với ext4, có nó hỗ trợ nó. Kiểm tra debugfschỉ số lệnh. Ví dụ: bạn cần đặt thiết bị nơi hệ thống tập tin ext4 của bạn được gắn kết (ví dụ / dev / sda3) và bạn cần lấy số inode trong hệ thống tệp đó (sử dụng ls -i, giả sử 42000 là số), sau đó bạn chỉ cần gõ: debugfs -R 'stat <42000>' /dev/sda3. Chạy cái này như root, hoặc với đủ đặc quyền. Hãy tìm crtimelĩnh vực, đó là một trong những. Đối với JFS và BTRFS, bạn sẽ cần tìm lệnh gỡ lỗi tương đương ...
Huygens

//, NIIICE. Tôi đã thử $ ls -i | grep dump.rdb 656376 dump.rdb và $ sudo debugfs -R 'stat <656376>' / dev / sda2, nhưng tôi nghĩ tôi chưa có ext4 trên đó. Nếu tôi thử nó trên ext4, tôi sẽ nói như vậy.
Nathan Basan

@NathanBasan Bạn có thể làm df -Tđể có được loại phân vùng hoặc đơn giản là loại mount. Hãy chắc chắn rằng inode tập tin thuộc về phân vùng chính xác. Các nút là (theo bản chất của chúng) dành riêng cho một phân vùng.
Huygens
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.