Điểm chung của việc có một hệ thống tệp Copy-On-Write (CoW) như btrfs là nội dung của nhiều phiên bản của một tệp có thể được chia sẻ một cách hiệu quả. Vì vậy, bạn có thể thấy một tệp dưới dạng tập hợp các phạm vi có nội dung, trong đó nội dung có thể hoặc không thể được chia sẻ bởi các tệp khác. Hoặc bởi các phiên bản khác của tập tin. Việc thực hiện giống như một cây kéo dài, nơi kéo dài có thể được chia sẻ.
Cơ chế tương tự hoạt động trong khi viết một thay đổi cho một tệp (và do đó tạo ra một phiên bản mới của tệp đó) đang được sử dụng để thực hiện khấu trừ. Việc triển khai được mô tả trên https://github.com/g2p/bedup :
Sự trùng lặp được thực hiện bằng tính năng Btrfs cho phép sao chép dữ liệu từ tệp này sang tệp khác. Các phạm vi nhân bản trở thành chia sẻ trên đĩa, tiết kiệm không gian.
Việc triển khai trong kernel là (ví dụ) tại http://lxr.free-electrons.com/source/fs/btrfs/ioctl.c#L2843 ; Nhận xét cho thấy rõ rằng đó không phải là về 'phản xạ' tệp, mà là về phạm vi:
2843 /**
2844 * btrfs_clone() - clone a range from inode file to another
2845 *
2846 * @src: Inode to clone from
2847 * @inode: Inode to clone to
2848 * @off: Offset within source to start clone from
2849 * @olen: Original length, passed by user, of range to clone
2850 * @olen_aligned: Block-aligned value of olen, extent_same uses
2851 * identical values here
2852 * @destoff: Offset within @inode to start clone
2853 */
Vì vậy, nó không phải là tập tin được phản ánh, đó là phạm vi được chia sẻ. Một tệp mới cũng có thể được xây dựng bằng cách chia sẻ phạm vi với nhiều tệp. Hoặc được chia sẻ trên các tập. Hoặc (không chắc chắn nếu điều này hiện được hỗ trợ) thậm chí có cùng phạm vi nhiều lần trong cùng một tệp;)
Do đó, không có công cụ cấp cao nào tồn tại để tìm các tệp chia sẻ toàn bộ tệp vì đây là khái niệm dẫn xuất. Tất nhiên là có thể viết hỗ trợ cho nó, nhưng đó không phải là trường hợp theo như tôi biết ...
filefrag -v
trên tất cả các tệp và tìm phạm vi chung.