Pytanie może być nieprecyzyjne, dlatego postaram się wyjaśnić je bardziej szczegółowo.
Z wielu powodów mam wiele kopii tego samego pliku w systemie plików Linux. Wiele z nich jest dość dużych.
Powiedz, że mam /path/to/some.file
i kopie tego pliku /other/path/file.name
i /yet/another/path/third.copy
. Zastanawiam się, czy istnieje system plików, który dosłownie sprawiłby, że dwa z tych plików działałyby jako odniesienie do oryginału. Oczywiście, jeśli użytkownik zmodyfikuje jeden z nich, wtedy i tylko wtedy stają się niezależnymi plikami.
PS. Wiem, że można to (częściowo) osiągnąć za pomocą linków. Ale chcę, aby ta funkcja, którą starałem się wyjaśnić powyżej, była obsługiwana przez system plików w sposób przejrzysty.
linux
filesystems
DejanLekic
źródło
źródło
Odpowiedzi:
Ta funkcja nazywa się deduplikacją . Żaden z popularnych systemów plików Linux (ext *) nie obsługuje go, ale najwyraźniej ZFS obsługuje go częściowo . Istnieje również tabela systemów plików z listą, między innymi, deduplikacji, ale wydaje się, że nie ma żadnych popularnych wyborów - jest to jednak planowana funkcja dla Btrfs.
Sądzę, że okresowe sprawdzanie systemu plików i tworzenie odpowiednich twardych dowiązań to najlepsze, co możesz zrobić w tej chwili, chociaż nie oznacza to, że kopiowanie przy zapisie.
źródło
Głównym słowem kluczowym, którego chcesz szukać, jest „kopiuj przy zapisie”. BTRFS ma operację klonowania, która robi dokładnie to, co chcesz i
cp --reflink
zrobi to, czego szukasz, pod warunkiem, że twój system ma wystarczająco nowoczesne jądro i coreutils 7.5. Wiki Źródło Również bedup jest narzędziem, które scali duplikaty na całej objętości. CoW to także funkcja jazdy pod technologią migawkową btrfs, IIRC.źródło
cp --reflink
ale zauważam, że tak naprawdę chcę, aby FS wykrywał klony i zamiast tego używał referencji, w sposób przezroczysty. Brakuje mi również tegobedup
narzędzia.cp --reflink
/ klon), albo osobnego narzędzia, aby zakończyć zadanie później (bedup).Istnieje internetowy system plików S3QL przeznaczony do tworzenia kopii zapasowych o dużej pojemności do deduplikacji.
źródło
Zfs, btrfs, ext3cow, bcachefs (afaik, ale jest szansa, że nie jest jeszcze zaimplementowany). Microsoft miał jeden w fazie rozwoju, ale zatrzymał się z nieznanych przyczyn.
źródło