Lệnh Mac OS X 10.6 / usr / bin / stat, đầu ra mặc định hiển thị cho tôi là gì?


5

Khi tôi chạy lệnh stat, đầu ra thực sự hiển thị là gì? Tôi biết bạn có thể chỉ định định dạng, nhưng tôi đang khắc phục sự cố rsync từ OS X sang NetApp SMB và cố gắng tìm ra những gì đang và không sao chép ..

# stat /Volumes/Media/MediaBank/WEB_D/41/zoomify/41999V21.jpg
234881039 281475121196473 -rwxr--r-- 1 mbank wheel 0 378716 "Aug  9 19:17:50 2010" "Jan  3 12:56:26 2010" "Apr 26 09:34:13 2010" "Dec 27 23:35:32 2009" 16384 768 0 /Volumes/Media/MediaBank/WEB_D/41/zoomify/41999V21.jpg

Và đây là bản sao được đồng bộ hóa với SAN ..

# stat /Volumes/SAN_Media/MediaBank1/WEB_D/41/zoomify/41999V21.jpg
771751969 10654547399 -rwx------ 1 root wheel 0 378716 "Aug  9 09:39:45 2010" "Jan  3 12:56:26 2010" "Jul 23 17:52:30 2010" "Jan  3 12:56:26 2010" 33028 744 0 /Volumes/SAN_Media/MediaBank1/WEB_D/41/zoomify/41999V21.jpg

Tôi đoán định dạng đầu ra là thế này ..

unknown1 unknown2 permissions unknown3 uid gid linkcount bytes time1 time2 time3 time4 unknown4 unknown5 unknown6 fullpath .. 

Đối với thời đại, tôi đoán ba trong số họ phải đồng thời, mtime và ctime, nhưng tại sao lại có cái thứ 4 và cái nào là cái nào?

Câu trả lời:


9

Tôi không phải là người dùng OS X, nhưng tôi quen thuộc với FreeBSD. Kết quả đầu ra với nó trông giống như của bạn, nhưng nếu bạn muốn làm rõ mọi thứ có thể đọc được, hãy sử dụng stat -x your_path.

Ồ, những lĩnh vực đó là gì? Có lẽ đoạn trích này từ tài liệu OS X giúp:

struct stat { /* when _DARWIN_FEATURE_64_BIT_INODE is NOT defined */
     dev_t    st_dev;    /* device inode resides on */
     ino_t    st_ino;    /* inode's number */
     mode_t   st_mode;   /* inode protection mode */
     nlink_t  st_nlink;  /* number or hard links to the file */
     uid_t    st_uid;    /* user-id of owner */
     gid_t    st_gid;    /* group-id of owner */
     dev_t    st_rdev;   /* device type, for special file inode */
     struct timespec st_atimespec;  /* time of last access */
     struct timespec st_mtimespec;  /* time of last data modification */
     struct timespec st_ctimespec;  /* time of last file status change */
     off_t    st_size;   /* file size, in bytes */
     quad_t   st_blocks; /* blocks allocated for file */
     u_long   st_blksize;/* optimal file sys I/O ops blocksize */
     u_long   st_flags;  /* user defined flags for file */
     u_long   st_gen;    /* file generation number */
 };

6

Kết hợp câu trả lời của Janne và Gordon:

Gọi điện thoại stat không có cờ:

$ stat Report.docx 
234881026 23858800 -rw-r--r-- 1 will staff 0 176083 "Apr 29 11:44:25 2012" "Apr 29 11:14:56 2012" "Apr 29 11:14:56 2012" "Apr 27 19:22:39 2012" 4096 344 0 Report.docx

Gọi điện thoại stat -x cung cấp nhãn có thể đọc được cho con người, nhưng chỉ xác định 3 trong 4 ngày:

$ stat -x Report.docx 
  File: "Report.docx"
  Size: 176083       FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: (  501/    will)  Gid: (   20/   staff)
Device: 14,2   Inode: 23858800    Links: 1
Access: Sun Apr 29 11:44:25 2012
Modify: Sun Apr 29 11:14:56 2012
Change: Sun Apr 29 11:14:56 2012

Gọi điện thoại stat -s cho chúng ta một câu trả lời tốt hơn:

$ stat -s Report.docx 
st_dev=234881026 st_ino=23858800 st_mode=0100644 st_nlink=1 st_uid=501 st_gid=20 st_rdev=0 st_size=176083 st_atime=1335663865 st_mtime=1335662096 st_ctime=1335662096 st_birthtime=1335518559 st_blksize=4096 st_blocks=344 st_flags=0

Ở đây chúng tôi thấy bốn ngày: st_atime, st_mtime, st_ctime, st_birthtime.

st_birthtime bị thiếu trong verbose ( -x ) đầu ra - và đối với tôi, điều này phù hợp với created ngày mà Finder tìm thấy.


Hãy nhìn vào trang nam , cấu trúc tài liệu thứ hai ( when _DARWIN_FEATURE_64_BIT_INODE is defined ) hiển thị bốn ngày và xác định chúng dưới đây.

 The time-related fields of struct stat are as follows:

 st_atime         Time when file data last accessed.  Changed by the mknod(2), utimes(2) and read(2)
                  system calls.

 st_mtime         Time when file data last modified.  Changed by the mknod(2), utimes(2) and write(2)
                  system calls.

 st_ctime         Time when file status was last changed (inode data modification).  Changed by the
                  chmod(2), chown(2), link(2), mknod(2), rename(2), unlink(2), utimes(2) and write(2)
                  system calls.

 st_birthtime     Time of file creation. Only set once when the file is created. This field is only
                  available in the 64 bit inode variants. On filesystems where birthtime is not avail-
                  able, this field holds the ctime instead.

Vì vậy, tùy thuộc vào kiến ​​trúc của bạn, ngày thứ tư là ngày tạo (khi 64 bit) hoặc trùng lặp ctime


1

Đầu ra của stat (1) sẽ khác nhau tùy thuộc vào hệ thống / hệ thống tập tin là 64 bit hay 32 bit. (Nếu bạn lấy lại 4 datetimes, thì đó là 64 bit).

Trang man cho stat (2) và lstat (2) (cái sau mà stat (1) thực sự sử dụng theo mặc định) hiển thị tất cả các trường, nhưng vì một số lý do, stat (1) đơn giản là không trả chúng theo cùng một thứ tự như được liệt kê ở đó.

Nó xuất hiện thứ tự của stat (1) mà không có tùy chọn là:

  • ID thiết bị
  • Số inode
  • Quyền (chế độ)
  • Số lượng liên kết cứng (thường là 1)
  • Tệp người dùng (chủ sở hữu)
  • Tập tin nhóm
  • ID thiết bị
  • Kích thước tính theo byte
  • Thời gian truy cập lần cuối
  • Lần sửa đổi (nội dung) lần cuối
  • Lần cuối thay đổi quyền
  • Tạo thời gian
  • Kích thước khối lý tưởng cho tập tin
  • Các khối có kích thước 512 byte được phân bổ cho tệp
  • Cờ được đặt trong tệp (xem chflags (2))

0

So sánh đầu ra của stat -r (in thông tin ở dạng "thô", ví dụ: lần tính bằng giây kể từ thời đại) với stat -s (có nhãn, phù hợp để thiết lập các biến shell). Nếu tôi phân tích đúng (sử dụng OS X v10.6), các trường là: số thiết bị, số inode (/ số ID tệp), chế độ cấp phép, số liên kết, chủ sở hữu, nhóm, thiết bị cho nhân vật và chặn các tệp đặc biệt ), kích thước tính theo byte, thời gian truy cập, sửa đổi thời gian, thay đổi thời gian, thời gian sinh (tức là tạo inode), kích thước khối, số khối, cờ tệp và cuối cùng là tên (/ path).

Lưu ý rằng không phải tất cả thời gian sẽ được theo dõi trên các hệ thống tệp không phải hệ điều hành X (không phải HFS + hoặc HFSX); đối với các tệp được truy cập qua SMB, tôi hy vọng một số thời gian được báo cáo sẽ được tạo thành.

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.