Ähnlich, aber anspruchsvoller als diese Frage:Wie kopiere ich Dateien, ohne die Dateierstellungszeiten überhaupt zu ändern?
Ich möchte Dateien zwischen Computern kopieren, ohne dass die Daten „Geändert“ und „Erstellt“ durcheinander geraten.
Der Zweck besteht darin, S von Projektcode auf drei verschiedenen Computern zu vergleichen diff
, die ich während der Arbeit an ihnen synchronisieren konnte. Aber ich habe immer nur an einem Computer gleichzeitig gearbeitet und weiß jetzt nicht mehr, welcher der aktuellste war. Es ist ein Chaos und ich möchte die Kopien ein für alle Mal vereinheitlichen (und hoffentlich unter Versionskontrolle stellen).
Wenn ich diff
Tools verwende, kann mir die Kenntnis des Dateiänderungsdatums dabei helfen, Änderungen zu verstehen und zusammenzuführen.
2 der 3 Computer sind Linux und 1 hat Windows 8.
Alle anderen Möglichkeiten zur Erreichung der oben genannten Ziele und alle Best Practices in solchen Situationen sind willkommen.
Antwort1
Unter Linux (und anderen Unix-ähnlichen Betriebssystemen) können Sie Dateien von und zu einem Flash-Laufwerk oder von einem SMB/FTP-Server kopieren mit
cp -p
Dadurch sollten die Zeitstempel erhalten bleiben.
Ich weiß nicht, ob Zeitstempel beim Hochladen auf den Server erhalten bleiben können.
Antwort2
Im Allgemeinen gibt es drei Attribute für Dateien/Ordner: Erstellungs-, Änderungs- und Zugriffszeit. Die Zugriffszeit ist nicht besonders wichtig. Unter Linux wird die Erstellungszeit nicht verwendet (und kann nicht mit Standardverfahren abgerufen werden). Das einzige wichtige Attribut ist also die Änderungszeit. Beim Kopieren von Daten mit dem Tool des Betriebssystems wird die Änderungszeit nicht geändert (zumindest unter Linux). Wenn dies nicht der Fall ist, können Sie die Daten vor der Übertragung komprimieren und am anderen Ende dekomprimieren. Im Allgemeinen bewahren Backup-Tools alle Attribute.
Wenn Sie alle Attribute strikt beibehalten möchten, können Sie die folgenden Methoden verwenden.
cp
mit der Option -a
aka --archive
oder --preserve=all
oder
rsync
mit -t
.
Diese Befehle sind standardmäßig in Linux verfügbar (können auch für Windows heruntergeladen werden).
Wenn Sie kein Interesse an Befehlszeilentools haben, verwenden Sie zum Kopieren der Daten ein Synchronisierungstool, das das Kopieren von Attributen unterstützt.
Antwort3
Wenn Sie nicht sicher sind, welcher Code auf den Computern der beste ist, kopieren Sie am besten alle drei Quellverzeichnisse auf einen Computer und führen Sie sie dann Datei für Datei zusammen.Zusammenführungswerkzeuge.
Eine andere Möglichkeit wäre, ein Git-Repo auf einer Maschine zu erstellen und Quellen von einem anderen Computer zu kopieren, wobei die Git-Repo-Dateien überschrieben werden oder sie einfach zu einem neuen Zweig hinzugefügt werden und dann verwendet werdengit's merge. Für Windows bevorzuge ichTortoise Git-Clientfür die Durchführung aller grundlegenden Versionierungsaufgaben.
Zum Kopieren der Metadaten können Sie, wie von anderen vorgeschlagen, , verwenden rsync -t
. cp --preserve=all
Für FTP-Übertragungen können Sie verwenden scp -p
.
Antwort4
Zwischen den beiden Linux-Rechnern können Siersync, werden die Zeitstempel so beibehalten, wie sie sind.
Für Windows können Sie verwendenRobokopieum die Dateien zu kopieren, ohne die Zeitstempel zu ändern. Vielleicht können Sie es verwenden, um die Dateien von einem FTP-Server in Ihrer Linux-Box nach Windows zu kopieren.