Mam na myśli sytuację, w której miałbym coś, co tworzy kopię katalogu, ulepsza kilka plików, a następnie wykonuje pewne przetwarzanie wyniku. Robiono to dość często, może kilkadziesiąt razy dziennie. (Dokładny przypadek użycia to testowanie poprawek; skopiuj kod, załataj go, kompilacja / test / raport / itp.)
To, czego szukam, można zrobić, tworząc nową strukturę katalogów i wypełniając ją twardymi linkami z oryginału. Działa to jednak tylko wtedy, gdy wszystkie używane narzędzia usuwają i odtwarzają pliki zamiast je edytować.
Czy istnieje sposób, aby system plików wykonywał kopiowanie przy zapisie dla pliku?
Uwaga: Zdaję sobie sprawę, że wielu FS używa COW na poziomie bloku (wszystkie aktualizacje są wykonywane przez zapisy do nowych bloków), ale nie tego chcę.
cp
iln
robi prawie dokładnie to samo. Blokowa COW jest sztuczką, aby zminimalizować interwał, w którym metadane FS są niepoprawne: en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_modelOdpowiedzi:
Jeśli masz wybór platformy dla swojego serwera plików, wybrałbym najnowszą wersję OpenSolaris i użyłem funkcji deduplikacji ZFS. W ten sposób kopie plików nie zajmowałyby dodatkowego miejsca, a nawet wspólne segmenty między plikami nie byłyby replikowane.
Wszystko o deduplikacji ZFS można przeczytać w tym poście na blogu Jeffa Bonwicka .
źródło
Większość linuksowych rozwiązań do wirtualizacji oferuje COW na poziomie plików wśród zwirtualizowanych systemów operacyjnych (skopiowanych z WP):
źródło
Może być SVN lub innym narzędziem do kontroli wersji (git, cvs)?
źródło