Ich denke an eine Situation, in der ich eine Kopie eines Verzeichnisses erstellen, ein paar Dateien optimieren und dann das Ergebnis bearbeiten würde. Dies wird ziemlich oft gemacht, vielleicht ein paar Dutzend Mal am Tag. (Der genaue Anwendungsfall ist das Testen von Patch - Einsendungen. Machen Sie den Code nach, patchen Sie ihn, erstellen Sie / test / report / etc.)
Nach was ich suche, könnte getan werden, indem man eine neue Verzeichnisstruktur verursacht und sie mit harten Verbindungen vom origonal füllt. Dies funktioniert jedoch nur, wenn alle Tools, die Sie verwenden, Dateien löschen und neu erstellen, anstatt sie direkt zu bearbeiten.
Gibt es eine Möglichkeit, das Dateisystem beim Schreiben für eine Datei kopieren zu lassen ?
Hinweis: Mir ist bewusst, dass viele FSs COW auf Blockebene verwenden (alle Aktualisierungen erfolgen über Schreibvorgänge in neue Blöcke), aber dies ist nicht das, was ich möchte.
cp
undln
macht fast genau dasselbe. COW auf Blockebene ist ein Trick, um das Intervall zu minimieren, in dem die FS-Metadaten falsch sind: en.wikipedia.org/wiki/ZFS#Copy-on-write_transactional_modelAntworten:
Wenn Sie die Plattform für Ihren Dateiserver ausgewählt haben, würde ich einen aktuellen OpenSolaris-Build verwenden und die Deduplizierungsfunktion von ZFS verwenden. Auf diese Weise würden Kopien von Dateien keinen zusätzlichen Speicherplatz belegen, und selbst gemeinsame Segmente zwischen Dateien würden nicht repliziert.
In diesem Beitrag auf Jeff Bonwicks Blog erfahren Sie alles über die Deduplizierung von ZFS .
quelle
Die meisten Linux-Virtualisierungslösungen bieten COW auf Dateiebene unter virtualisierten Betriebssystemen (kopiert aus dem WP):
quelle
Kann es sich um SVN oder ein anderes Versionierungswerkzeug (Git, CVS) handeln?
quelle