2010-02-18 2 views
5

Ich möchte ein persönliches digitales Archiv erstellen.Welche Open-Source-Repositorys oder Versionskontrollsysteme speichern die ursprünglichen mtime, ctime und atime der Dateien?

Ich möchte digitale Dateien (einige einige Jahre alt, einige neu, einige noch nicht erstellt) in diesem Archiv überprüfen und sie zusammen mit ihren Metadaten wie ctime, atime und mtime aufbewahren lassen.

Ich möchte in der Lage sein, diese Dateien aus diesem Archiv zu überprüfen, ihren Inhalt zu ändern und die Änderungen in das Archiv zu übernehmen, während die früheren Commits und ihre Metadaten intakt bleiben.

Ich möchte das Archiv sehr zuverlässig und sicher, und in der Lage, remote gesichert werden.

Ich möchte Dateien in und aus dem Archiv von PCs mit Linux, Mac OS X 10.5 + oder Win XP + überprüfen können.

Ich möchte Dateien in und aus dem Archiv von PCs mit RAM-Kapazitäten unter der Größe der Dateien überprüfen können. Z.B. Ich möchte in der Lage sein, eine 13 GB-Datei mit einem PC mit 2 GB RAM ein-/auszuchecken.

Ich dachte, Subversion könnte all dies tun, aber anscheinend it can't. (Zumindest konnte es nicht vor ein paar Jahren und soweit ich weiß, kann es immer noch nicht; korrigieren Sie mich, wenn ich falsch liege.)

Gibt es ein libre VCS oder ähnlich all diese Dinge ?

Danke für Ihre Hilfe.

+0

Scheint, dass es in svn's Fall ein Thema ist, das seit gut 7 Jahren oder länger in Erwägung gezogen wurde und das immer noch (noch!) In Betracht gezogen, aber noch nicht implementiert ist. Die gute Nachricht ist, dass der RFC anscheinend aktiv ist. Siehe http://subversion.tigris.org/issues/show_bug.cgi?id=1256 und http://permalink.gmane.org/gmane.comp.version-control.subversion.devel/117879. Also, was ist mit Alternativen? – sampablokuper

Antwort

0

Ich bezweifle, es gibt eine VCS, die genau das tut, was Sie wollen. Ich würde ein Feature wie dieses nicht als Hauptkriterium für die Auswahl eines vcs wählen. Wenn Sie jedoch svn und git verwenden, können Sie Eigenschaften zusammen mit Ihrem Commit speichern und die Sicherheit aktivieren, um die Bearbeitung der Eigenschaften nicht zuzulassen.

1

Was Sie wollen, scheint mit Rsync und Snapshots besser zu sein. Sie können darüber lernen: http://rsnapshot.org/

Wie auch immer, das scheint eine Frage besser für Serverfault oder Superuser geeignet.

0

Git kann es auch nicht tun, und auch Mercurial und, soweit ich weiß, kein anderes modernes SCM-System. Der Grund ist, dass 1) sie für den Quellcode entwickelt wurden und 2) das Bewahren und Aktualisieren dieser Datei-Metadaten-Zeitstempel im Hinblick auf Verzweigungen, Zusammenführungen und andere SCM-Aktivitäten ziemlich unmöglich ist. Außerdem können sie alle mtime-Dateien auf die Commit-Zeit setzen, was für die meisten Anwendungsfälle genauso nützlich ist wie mtime. Die Verwendung von Mtimes verursacht auch viele unnötige Abwanderungen in SCM-Systemen (können Sie sich vorstellen, dass sie auch eine Zeitlang gespeichert haben?) Ältere dateibasierte SCMs wie CVS und sogar Visual SourceSafe speichern Mtimes, aber sie haben so viele andere Schwächen für Ihren Anwendungsfall Sie sind es nicht wert, darüber nachzudenken.

Die allgemeine Lösung, die für alle diese SCMs vorgeschlagen wird, ist ein Commit/Update-Hook-Skript, das Ihre Dateimetadaten (Zeitstempel, Berechtigungen usw.) als separate Datei im Repository oder sogar als benutzerdefinierte SVN-Eigenschaft speichert. Ihr Skript aktualisiert diese Datei beim Einchecken und stellt die Metadaten beim Auschecken/Aktualisieren wieder her. Zusammenführen wird hässlich, egal was passiert. Es gibt viele solcher Skripte als Beispiele im Internet.

Wenn Sie ein tragbares Archiv möchten, ist die einfachste Sache, die Sie tun können, nur tar + xdelta + SHA1SUM/gpg-Signaturen, um Dinge zusammen zu "verketten".

Verwandte Themen