2008-10-07 22 views
18

Trên Windows NTFS, có một tính năng đẹp nhưng phần lớn không được sử dụng được gọi là "Dòng dữ liệu thay thế" (ADS) mà gần đây tôi đã sử dụng trong một dự án sở thích-dev.có điều gì đó giống như luồng dữ liệu thay thế trên bất kỳ hệ thống tệp linux nào không?

Trên máy Mac HFS + cũng có tính năng tương tự đẹp nhưng hầu như không được sử dụng được gọi là "dĩa đặt tên".

Tôi đang nghĩ đến việc chuyển dự án này sang Linux, nhưng tôi không biết liệu có bất kỳ Hệ thống tập tin nào trên Linux có tính năng như vậy không?

+0

Chủ yếu là không sử dụng? Bạn có chắc chắn về điều đó không. Nó rất hữu ích cho việc ẩn dữ liệu. – Pacerier

+0

@Pacerier: không được sử dụng, không có giao diện người dùng hoặc ứng dụng nào có vẻ giao tiếp với nó theo bất kỳ cách nào. –

+0

Đó là ** chính xác ** lý do tại sao chúng hữu ích cho việc ẩn virus. – Pacerier

Trả lời

10

Có các hệ thống tệp trên cả Windows và Linux (và các hệ điều hành khác) hỗ trợ các thuộc tính mở rộng (EAs). Hỗ trợ Windows đã được thêm vào cho OS/2 compat và không có bất kỳ giao diện tài liệu nào, ngoại trừ một phương pháp hacky thông qua API sao lưu (đó là những gì Cygwin làm). EA được thiết kế để lưu trữ các giá trị nhỏ chỉ. Trên Windows, mỗi EA có một tên ASCII (trong khi hầu như tất cả các tên khác là Unicode) và kích thước kết hợp của tất cả các EA trên một tệp không được lớn hơn 64k. EA không phải là tập tin: bạn không thể mở một tập tin xử lý cho một EA và đọc nó như một tập tin bình thường.

Luồng dữ liệu thay thế là một tính năng riêng biệt được cung cấp bởi NTFS, cho phép bạn cung cấp các tệp phụ thay thế bên trong tệp. Mỗi tệp có luồng dữ liệu chưa được đặt tên mặc định được tự động mở trừ khi bạn chỉ định một tệp thay thế. Bạn có thể mở một xử lý cho một ADS và đọc (thậm chí thực hiện) nó giống như một tập tin bình thường, với một tên tập tin (Unicode) duy nhất. Một quảng cáo có thể lớn như bất kỳ tệp đĩa nào.

Không có sự tương tự chính xác với ADS trên Linux mà tôi biết, nhưng bạn có thể sử dụng EA trên cổng Linux thay vì nếu giá trị dữ liệu nhỏ.

+3

luồng dữ liệu mặc định được đặt tên là 'DATA' –

+3

@DanD., '$ DATA', không phải' DATA'. – Pacerier

0

Hầu hết các hệ thống tệp Linux có extended attributes. Tôi không quen thuộc với các luồng NTFS, vì vậy tôi không thể so sánh cả hai. Hầu hết các hệ thống tập tin cần phải được gắn kết với cờ để kích hoạt các thuộc tính mở rộng, do đó, điều này có thể không hoạt động chung cho hệ thống của bất kỳ ai. Chúng thường được viết tắt là xattr hoặc xattrs.

0

Điều duy nhất tôi biết, mà đi phần nào theo hướng đó là extended attributes, nhưng từ những gì tôi đọc về ADS đó là def. không giống nhau. Chính xác thì bạn đang sử dụng cái đó để làm gì?

+1

Tôi muốn lưu trữ một số dữ liệu meta của các tệp trong đó. –

0

Hệ thống tệp Linux thường được sử dụng không hỗ trợ điều này. Thay vào đó, bạn có thể sử dụng nhiều tệp và lược đồ đặt tên phù hợp (chỉ cần nối thêm chỉ mục luồng vào từng tên tệp, có thể) hoặc một tệp lưu trữ chứa nhiều tệp; bạn sẽ thấy cách tiếp cận như vậy tốt hơn theo cách khác - ví dụ, điều gì xảy ra trên Windows nếu ai đó muốn sao lưu các tệp Windows sang phương tiện có hệ thống tệp không phải NTFS?

+3

Bạn sẽ sử dụng chương trình sao lưu sử dụng API dự phòng - chúng sẽ gói tất cả siêu dữ liệu trên một tệp (EA, bộ mô tả bảo mật, luồng dữ liệu, tệp được mã hóa, v.v.) vào một luồng duy nhất để lưu và sau đó khôi phục . –

13

Vấn đề với ADS là Windows sẽ "mất" những luồng ADS thứ hai mà nó di chuyển đến bất kỳ hệ thống tệp không phải NTFS nào. Nó không xem xét những dòng suối quan trọng, vì vậy đôi khi họ không được giữ xung quanh. Bạn sẽ thấy chúng không thể truy cập hoặc biến mất khi chia sẻ qua mạng, khi được ghi vào đĩa CD, đặt trên ổ đĩa USB, v.v ...

Dài và ngắn, trừ khi bạn có rất hẹp tập trung cho ứng dụng của bạn (luôn trên NTFS), tôi sẽ tránh hoàn toàn các luồng ADS.

+2

Điều này có thể chấp nhận được đối với một số trường hợp sử dụng như siêu dữ liệu bộ nhớ đệm hoặc bù đắp tập tin có thể được tạo lại/tính toán với nhiều nỗ lực hơn. – hippietrail

7

Thuộc tính mở rộng được hỗ trợ một số hệ thống tệp, đặc biệt là XFS và (tôi nghĩ) JFS; nhưng bị giới hạn về kích thước (64k trong XFS). Reiser4 hỗ trợ dĩa có kích thước tùy ý; nhưng nó không được hỗ trợ bởi bất kỳ bản phân phối nào mà tôi biết. Một lựa chọn khác là ZFS, một lần nữa không thể sử dụng được.

Cuối cùng, có thể khôn ngoan hơn khi chỉ sử dụng thư mục.

Các vấn đề liên quan