Không siêu dữ liệu chiếm bất kỳ kích thước?


51

Tôi đặt 4096 ký tự vào một tệp văn bản và lưu nó. Vì vậy, mỗi ký tự là 1 byte, Kích thước của tệp văn bản phải là byte 4K. Bạn thấy bên dưới là OK:

nhập mô tả hình ảnh ở đây

Tôi kết nối bộ nhớ flash với máy tính của tôi. không gian trống trên bộ nhớ flash là 1,717,518,336byte :

nhập mô tả hình ảnh ở đây

Tôi đã tạo một bản sao của tập tin trong bộ nhớ flash của mình. Và một lần nữa hãy nhìn vào không gian miễn phí. Nó có 1,717,514,240byte không gian trống:

nhập mô tả hình ảnh ở đây

Hãy xem sự khác biệt là gì:

1,717,518,336 - 1,717,514,240 =4096 byte


Câu hỏi của tôi :

Q1:

Như bạn thấy trong hình ảnh cuối cùng ở trên, không gian duy nhất mà tệp chiếm trên flash, là không gian cho nội dung của nó [ký tự]. Vậy tệp siêu dữ liệu ở đâu?

Ý tôi là, khi tôi di chuyển tệp sang máy tính khác, làm thế nào để hiểu tên tệp, Chủ sở hữu tệp, Ngày tạo và sửa đổi và ...?

Nó không chiếm bất kỳ kích thước nào? !!

Quý 2:

Tôi có thể xem tệp siêu dữ liệu trong bộ nhớ flash không?

nhập mô tả hình ảnh ở đây

Đánh giá cao thời gian và sự cân nhắc của bạn.


10
siêu dữ liệu sẽ được chứa trong chính hệ thống tập tin. đó không phải là một phần của kích thước tệp được báo cáo bởi Windows. Hơn nữa, siêu dữ liệu FAT32 và NTFS sẽ khác nhau.
Ramhound

@Ramhound khi tôi di chuyển tệp văn bản sang bộ nhớ flash, tệp siêu dữ liệu của nó cũng chuyển sang bộ nhớ flash, phải không? Làm thế nào tôi có thể nhìn thấy nó?
The GoodUser


1
Ngoài việc hiểu nội bộ hệ điều hành (đáng giá theo cách riêng của nó), có lẽ không có lý do gì để xem hoặc sửa đổi thông tin đó trừ khi bạn đang viết chương trình sửa chữa / khôi phục đĩa. Đối với sử dụng bình thường, bạn sẽ không bao giờ muốn thay đổi thông tin ở cấp độ này vì nó có thể dễ dàng làm suy yếu tính toàn vẹn của chính hệ thống tập tin và mọi thứ sử dụng nó.
Joe

3
Câu trả lời ngắn: Nó chiếm dung lượng, nhưng nó không được tính là một phần của kích thước tệp.
dùng253751

Câu trả lời:


50

Có, siêu dữ liệu chiếm không gian. Trên NTFS, nó chiếm 1024 byte, cụ thể. Tuy nhiên, thông tin không được lưu trữ trong tệp mà trong bảng tệp chính MFT. Cụ thể trong bản ghi MFT # 4 $AttrDef.

Xem bài viết Technet này để biết chi tiết: bảng 3.5 chứa tất cả các bản ghi MFT được xác định.

Khi một ổ đĩa được định dạng bằng NTFS, tệp Bảng tệp chính (MFT) và các phần siêu dữ liệu khác được tạo. Siêu dữ liệu là các tệp NTFS sử dụng để thực hiện cấu trúc hệ thống tệp. NTFS bảo lưu 16 bản ghi đầu tiên của MFT cho các tệp siêu dữ liệu.

NTFS tạo một bản ghi tệp cho mỗi tệp và bản ghi thư mục cho mỗi thư mục được tạo trên ổ đĩa NTFS. MFT bao gồm một bản ghi tệp riêng cho chính MFT. Các bản ghi tệp và thư mục này được lưu trữ trên MFT. Các thuộc tính của tệp được ghi vào không gian được phân bổ trong MFT. Bên cạnh các thuộc tính tệp, mỗi bản ghi tệp chứa thông tin về vị trí của bản ghi tệp trong MFT.

Lưu ý rằng các hệ thống tệp khác có thể và xử lý khác với siêu dữ liệu.

EDIT: Nó đã được chỉ ra trong phần bình luận rằng câu trả lời này bị thiếu điểm vì OP đã yêu cầu siêu dữ liệu trên các hệ thống tập tin FAT32, không phải NTFS. Nếu tôi biết cách, tôi sẽ xóa thuộc tính "câu trả lời đúng". Do đó, tôi cung cấp thêm thông tin trả lời câu hỏi liên quan đến FAT32.

FAT32 lưu siêu dữ liệu đơn giản như khả năng hiển thị hoặc thời gian sửa đổi cho từng tệp và thư mục trong một mục trong thư mục mẹ của tệp hoặc thư mục, tạo một cây từ thư mục gốc của FS. Như đã chỉ ra liên quan đến NTFS, đây không phải là một tệp mà được lưu trong cấu trúc dữ liệu thư mục. Mục nhập ban đầu lớn 32 byte và chứa các thuộc tính sau:

Name (8.3) xxxxxxxx.yyy. (88 bits)

Attribute byte (8 bits of information, described later in this section).

One reserved byte.

Create time (24 bits).

Create date (16 bits).

Last access date (16 bits).

Two reserved bytes.

Last modified time (16 bits).

Last modified date (16 bits).

Starting cluster number in the file allocation table (16 bits).

File size (32 bits).

Danh sách được lấy từ bài viết Microsoft Technet này và liên quan đến FAT16. Vì kích thước cụm của FAT32 có thể là 32 bit và tên của các tệp có thể dài hơn 8.3 nên bảng không hoàn toàn chính xác. Để chứa các tên tệp dài và các đĩa lớn hơn, FAT32 sửa đổi một số hành vi có thể được đọc trong Wikipedia ở đây nhưng ý tưởng cơ bản vẫn tồn tại.


2
Bạn có thể sử dụng NTFSinfo của bộ Sysiternal để xem Siêu dữ liệu và tìm bất kỳ phần mở rộng nào. Bạn có thể tải xuống tại đây: technet.microsoft.com/en-us/sysiternals/default Có một số trình chỉnh sửa siêu dữ liệu xung quanh, nhưng tôi không thể đề xuất bất kỳ ai vì tôi chưa sử dụng chúng.
bjanssen

9
@ TheoodUser-Sp siêu dữ liệu, trên NTFS ít nhất, không được lưu trữ trong "một tệp" theo nghĩa thông thường, đó là những gì tôi nhận được ấn tượng mà bạn đang tìm kiếm. Không thứ gì đó giấu trong thư mục \ windows ở đâu đó mà tất cả chúng ta chỉ không nói cho bạn biết; siêu dữ liệu tệp là một phần không thể thiếu của chính hệ thống tệp.
Rob Moir

2
Trong trường hợp này, Flash Drive được định dạng là FAT-32. Vì vậy, metada được lưu trữ trong Bảng phân bổ tệp (FAT) vi.wikipedia.org/wiki/File_Allocation_Table
jnovacho

2
Điều quan trọng cần lưu ý là các bảng phân bổ cho NTFS và FAT được sắp xếp trước. Nó khác nhau từ định dạng đến định dạng, nhưng một số lĩnh vực thường được sử dụng với các khối preallocated trống sẽ được sử dụng để lưu trữ siêu dữ liệu để giảm phân mảnh.
Kaslai

2
Điều gì khiến bạn nghĩ siêu dữ liệu là kích thước cố định? Danh sách kiểm soát truy cập chắc chắn có thể thay đổi khá nhiều về độ phức tạp; Tôi không thấy làm thế nào nó luôn có thể phù hợp với 1024 byte (cùng với tất cả các siêu dữ liệu khác như thời gian truy cập và sửa đổi)
Ben Voigt

26

Nó không chiếm bất kỳ kích thước nào? !!

Có, nhưng đó là một mục nhỏ trong một khối lớn được phân bổ trước. Khối đó được tính trong phần "đã sử dụng" trên đĩa của bạn. Thêm một mục bên trong khối đó không yêu cầu mở rộng khối.

Tùy thuộc vào hệ thống tập tin, cuối cùng, khối sẽ được lấp đầy và mở rộng bằng cách nào đó sau khi rất nhiều tên tệp được thêm vào.

Tôi có thể xem tệp siêu dữ liệu trong bộ nhớ flash không?

Không dễ dàng

Như Ruslan và Blorgbeard đã nhận xét. Bạn có thể cài đặt trình xem hex như HxD , cho phép bạn xem (và chỉnh sửa - rất cẩn thận) dữ liệu hệ thống tệp thô. Nhưng bạn sẽ phải tự giải thích về các byte thuộc về cấu trúc hệ thống tập tin nào. Cho rằng bạn sẽ cần một số tài liệu tốt về hệ thống tập tin cụ thể được sử dụng trên đĩa flash. FAT32 có thể dễ hiểu hơn bất kỳ biến thể nào trong số nhiều biến thể của NTFS. Xem Hiểu hệ thống tập tin FAT32 chẳng hạn.


3
@Theood Nếu bị Google tước quyền, tôi có thể bắt đầu bằng cách khởi động Linux và sử dụng ddđể sao chép hệ thống tệp flash thô vào một tệp trên đĩa khác, sau đó sử dụng trình xem hex để kiểm tra kết hợp với công việc tham chiếu tốt trên hệ thống tệp cụ thể (nếu không độc quyền và không được tiết lộ). Tôi có thể thực hiện thay đổi siêu dữ liệu với touch, lặp lại ddvà sử dụng khác biệt nhị phân.
RedGrittyBrick

1
Thật tốt là tôi không bị Google tước đoạt.
Cthulhu

5
@Cthulhu: Những cái cũ không cần necronomicon. fhtagn.
RedGrittyBrick

2
Không cần thay đổi HĐH để sử dụng trình xem hex trên ổ cứng trực tiếp. Chỉ cần sử dụng một trình xem hex phong nha. (Dường như thậm chí hiewcó thể làm điều đó, nhưng tôi không chắc vì tôi đã ở trên windows từ lâu).
Ruslan

1
HxD chắc chắn sẽ làm điều đó, trên Windows. Menu mở rộng, mở đĩa.
Blorgbeard

7

Siêu dữ liệu không được lưu trữ (cũng không được báo cáo bởi các công cụ quản lý tệp thông thường) dưới dạng tệp, nó được lưu trữ trên dữ liệu của hệ thống tệp trên đĩa.

Tùy thuộc vào bản chất / phiên bản của hệ thống tệp, mỗi mục sẽ lấy một lượng không gian đĩa để thể hiện thông tin siêu dữ liệu.

Ngoài ra, bên cạnh không gian được phân bổ trong Bảng tệp chính, một số hệ thống tệp cũng sẽ ghi nhật ký về thay đổi tệp (chiếm thêm dung lượng) và một số hệ thống tệp thậm chí có thể được mở rộng với các trường bổ sung có chứa siêu dữ liệu mục đích đặc biệt.

Vì vậy, siêu dữ liệu về mặt kỹ thuật chiếm không gian đĩa, nhưng hầu hết các tiện ích quản lý tệp không sử dụng API của hệ thống gọi truy vấn hệ thống tệp để lấy không gian tệp chứ không phải cho không gian siêu dữ liệu .

Và sự trừu tượng này chỉ là phần nổi của tảng băng trôi, vì chính hệ thống tập tin hoạt động dựa trên sự trừu tượng của không gian đĩa vật lý cơ bản, được cung cấp bởi các thói quen đĩa cấp thấp, nên thực sự chỉ có logic bên trong của đĩa mới biết có bao nhiêu vị trí bộ nhớ thực tế có sẵn cho các mức cao hơn và có bao nhiêu được đánh dấu là không đáng tin cậy, dành riêng hoặc được sử dụng cho tổng kiểm tra.


3

Siêu dữ liệu phụ thuộc vào hệ thống tệp. Các hệ thống tệp cơ bản nhất thường được sử dụng trên phương tiện trao đổi được dựa trên hệ thống tệp DOS (FAT). DOS không có người dùng và quyền. Hay chính xác hơn, một số thông tin đó được mang trong bit dữ liệu thứ 8 của tên tệp. Chi phí tài nguyên duy nhất được sử dụng trong DOS FS cơ bản là tính toán các khối của tệp hoặc thư mục chứa trong đó - và khối đó có thể đã được cam kết để xử lý ".", Đã. IOW, thêm một tệp trống sẽ không thêm một bit lưu trữ, nhưng nó sẽ thay đổi một số bit được tiêu thụ và phân bổ hiện có.

Khi bạn sử dụng các hệ thống tệp nâng cao hơn, với nhật ký và người dùng, bạn sẽ nhận được siêu dữ liệu và các mục nhật ký và có thể là chuỗi pháp y để khôi phục các phiên bản tệp trước đó, v.v. Sau đó, một tệp nhỏ có thể phát nổ trong bộ nhớ đã sử dụng.

Vì vậy, hãy kiểm tra loại FS. Nếu đó là FAT, thì có lẽ bạn không có người dùng nào được ghi lại trong siêu dữ liệu trên phương tiện truyền thông. Do đó ... không có không gian sử dụng. :)

Một ví dụ điển hình về FAT FS là triển khai nguồn mở - và bạn có thể thấy rằng danh sách các hoạt động có sẵn không bao gồm "get / set user" và "kiểm tra quyền truy cập của người dùng". Không có danh tính = không lưu trữ danh tính đó.


2

Như bạn thấy trong hình ảnh cuối cùng ở trên, không gian duy nhất mà tệp chiếm trên flash, là không gian cho nội dung của nó [ký tự]. Vậy tệp siêu dữ liệu ở đâu?

"Tệp siêu dữ liệu" là thư mục chứa tệp. Về cơ bản đó là thư mục là gì - một tập hợp siêu dữ liệu mô tả nội dung của thư mục.

Ý tôi là, khi tôi di chuyển tệp sang máy tính khác, làm thế nào để hiểu tên tệp, Chủ sở hữu tệp, Ngày tạo và sửa đổi và ...?

Nó không chiếm bất kỳ kích thước nào? !!

Vâng, trong thư mục. Trong hầu hết các tệp, cùng một tệp có thể có hai tên khác nhau nếu được liên kết thành hai thư mục khác nhau.

Tôi có thể xem tệp siêu dữ liệu trong bộ nhớ flash không?

Nếu hệ thống tập tin của bạn hỗ trợ nó, bạn có thể thấy nó bằng cách xem kích thước của thư mục.


2

Siêu dữ liệu được lưu giữ ở đâu?

Khi chúng ta nói về siêu dữ liệu, có hai loại siêu dữ liệu.

Loại đầu tiên bao gồm ngày tạo, ngày sửa đổi cuối cùng, ngày truy cập cuối cùng. Tùy thuộc vào hệ thống tệp (ví dụ NTFS / FAT / Ext3, v.v.), sẽ có sẵn "siêu dữ liệu" khác nhau, ví dụ: chủ sở hữu Windows và quyền trên NTFS.

Loại đầu tiên áp dụng cho tất cả các tệp, ví dụ: tệp .txt trong ví dụ của bạn.

Tất cả các hệ thống tệp phân bổ trước các không gian để chứa các siêu dữ liệu này trong Bảng tệp chính (MFT cho NTFS, một số tên khác cho hệ thống tệp khác) mà người dùng không thể truy cập trực tiếp. Vì MFT không được tính là một phần của dung lượng ổ đĩa, nên không có dung lượng lưu trữ "bổ sung" nào được yêu cầu.

Loại "siêu dữ liệu" thứ hai được xác định bởi loại tệp hoặc ứng dụng. Ví dụ: Tài liệu Office giữ "Tác giả", "Chủ đề" và siêu dữ liệu khác; Hình ảnh JPEG giữ một tập hợp dữ liệu EXIF ​​bao gồm "ảnh ngày chụp", "kiểu máy ảnh", "tốc độ màn trập"; trong khi âm thanh MP3 chứa "album", "track #", "bitrate" ...

Loại thứ hai DOES chiếm thêm không gian, bởi vì các "siêu dữ liệu" này tạo thành một phần của tệp.


Kích thước khác nhau trong ổ đĩa khác nhau

Khi tệp văn bản của bạn được bật, C:\nó sẽ chiếm 4K. Nó có kích thước 1K khi bạn đặt nó vào ổ đĩa flash H:\. Điều này là do "kích thước khối" khác nhau cho các phân vùng khác nhau.

Các tập tin được phân bổ không gian trong khối. Do đó, trên hệ thống tệp có kích thước khối 4K, 1 byte được phân bổ 4K trong khi 4.097 byte (4K + 1 byte) được phân bổ 8K.

Rõ ràng của bạn C:được định dạng với kích thước khối 4K trong khi H:được định dạng với kích thước khối 1K, dẫn đến sự khác biệt.


Khi tôi sao chép một tệp văn bản trống vào bộ nhớ flash, siêu dữ liệu của nó cũng sẽ được chuyển sang bộ nhớ flash. Bây giờ, có cách nào, trong Linux chẳng hạn, để xem tệp siêu dữ liệu không? trong nhị phân chẳng hạn.
The GoodUser

Việc siêu dữ liệu được sao chép hay không phụ thuộc vào cách bạn thực hiện. Ví dụ: robocopycung cấp cho bạn tùy chọn sao chép dấu thời gian, thuộc tính, thông tin chủ sở hữu, danh sách kiểm soát truy cập (ACL), v.v. Nó cũng phụ thuộc vào việc hệ thống tệp trên bộ nhớ flash của bạn có hỗ trợ hay không (ví dụ: FAT32 không giữ thông tin chủ sở hữu và ACL. dù sao cũng bỏ đi). Siêu dữ liệu không ở dạng tệp để bạn không thể xem dữ liệu thô; nếu bạn muốn xem những thứ cấp thấp bạn có thể cần ddtrong Linux nhưng làm thế nào để diễn giải chúng là một câu chuyện khác.
Kenneth L
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.