Wie kopiere ich Dateien von einem Computer auf einen anderen, ohne dabei Metadaten zu verlieren?

3078
Milind R

Ähnlich, aber anspruchsvoller als diese Frage: Wie kopiere ich Dateien, ohne die Dateierstellungszeit zu ändern?

Ich möchte Dateien zwischen Computern kopieren, ohne dass die Daten "Geändert" und "Erstellt" verwendet werden.

Der Zweck besteht darin, diffeinige Projektcodes auf drei verschiedenen Computern zu vergleichen, die ich bei der Arbeit mit ihnen synchronisieren konnte. Aber ich habe immer nur an einer Maschine gearbeitet, und jetzt weiß ich nicht mehr, welche Maschine am aktuellsten war. Es ist ein Durcheinander, und ich möchte die Kopien ein für alle Mal vereinheitlichen (und hoffentlich unter Versionskontrolle stellen).

Wenn ich also diffWerkzeuge verwende, kann das Wissen um Änderungsdaten von Dateien mir helfen, Änderungen zu verstehen und zusammenzuführen.

2 der 3 Computer sind Linux und 1 ist Windows 8.

Alle anderen Möglichkeiten, dies zu erreichen, sowie bewährte Verfahren in solchen Situationen sind zu begrüßen.

1
"dd"? Aber im Ernst, warum fangen Sie nicht einfach mit git init an und sehen, wohin Sie das führt. guaka vor 9 Jahren 0
(1) Die zweite Antwort auf die Frage, zu der Sie einen Link erstellen, lautet "ZIP-Dateien". Warum ist das nicht gut genug für dich? (2) Linux behält im Allgemeinen kein Erstellungsdatum für eine Datei bei. Du fragst also nach etwas, das es nicht gibt (und das nicht möglich ist). (3) Warum ist das Änderungsdatum für Ihre Zwecke nicht ausreichend? Scott vor 9 Jahren 0
Wie wäre es, wenn Sie die Dateisysteme auf einer der Linux-Boxen anbringen? Marcelo vor 9 Jahren 0
Ich gehe davon aus, dass die Systeme über LAN verbunden sind. In einem solchen Fall können Sie einfach ein zugeordnetes Laufwerk erstellen ("Extras -> Netzlaufwerk zuordnen ..." im Explorer) und auf die Dateien von einem anderen System aus zugreifen, ohne das Kopieren / Einfügen oder Ändern der Attribute vorzunehmen. jjk_charles vor 9 Jahren 1
dd ist was ich verwenden würde. http://www.linuxmanpages.com/man1/dd.1.php Führen Sie vor und nach der Datei einen Sha-1-Hash aus, um sicherzustellen, dass es sich bei dem Bild um ein forensisches Duplikat handelt. Erstellen Sie eine bootfähige Kali-Diskette, die Befehle sind nativ und Sie können die fs im Ro-Modus mounten. Ben Plont vor 9 Jahren 0
Sha-1-Befehlsinformationen: http://linux.about.com/library/cmd/blcmdl1_sha1sum.htm Ben Plont vor 9 Jahren 0
@KasperSouren siehe [mein Kommentar] (http://superuser.com/questions/789532/how-to-copy-files-von-one-computer-to-andother-without-losing-any-metadata#comment1036386_792912) Milind R vor 9 Jahren 0
@Marcelo Wie? Samba? Ich kann diese Festplatte nicht physisch an die Linux-Maschinen anschließen. Milind R vor 9 Jahren 0
@jjk_charles Karte Netzlaufwerk auf Windows-Maschine von Linux-Maschine mit .... was? WebDAV? Samba? FTP? Milind R vor 9 Jahren 0
@BenPlont siehe [mein Kommentar] (http://superuser.com/questions/789532/how-to-copy-files-fromoneone-computer-to-andother-ohne-losereingeschlossen-eine-metadaten#comment1036386_792912) Milind R vor 9 Jahren 0
Ja. Samba / CIFS kann Windows-Freigaben unter Linux mounten. Für die andere Linux-Box wäre NFS in Ordnung. Marcelo vor 9 Jahren 1
@MilindR dd kopiert Dateien bitweise. genaue Duplikate. Wenn Sie einen sha-1-Hash in der Quelldatei ausführen, erhalten Sie diese Fingerabdrücke. Wenn Sie einen sha-1-Hash auf der Kopie ausführen und mit dem Sha-1-Hash der Quelldatei übereinstimmen, wissen Sie, dass Ihre Metadaten unverändert sind. Deshalb würde ich diese Methode verwenden. Ben Plont vor 9 Jahren 0
@MilindR, ja, Sie können Samba verwenden, um dies zu erreichen. jjk_charles vor 9 Jahren 0

4 Antworten auf die Frage

1
totti

Im Allgemeinen gibt es drei Attribute für Datei / Ordner. Erstellungs-, Änderungs- und Zugriffszeiten. Die Zugriffszeit ist nicht wichtig. In Linux wird keine Erstellungszeit verwendet (und nicht mit Standardverfahren abgerufen). Das einzig wichtige Attribut ist also die Änderungszeit. Während des Kopierens von Daten mit dem OS-Werkzeug wird die Änderungszeit nicht geändert (zumindest für Linux). Ist dies nicht der Fall, können Sie die Daten vor der Übertragung komprimieren und am anderen Ende dekomprimieren. Im Allgemeinen behalten die Sicherungswerkzeuge alle Attribute bei.
Wenn Sie alle Attribute streng beibehalten möchten, können Sie die folgenden Methoden verwenden.

cpmit der Option -aaka --archiveoder --preserve = all
oder
rsyncmit -t.

Diese Befehle sind standardmäßig in Linux verfügbar (auch für Windows verfügbar).
Wenn Sie nicht an Befehlszeilentools interessiert sind, verwenden Sie ein Synchronisierungstool, das das Kopieren von Daten unterstützt, um die Daten zu kopieren.

1
Community

Wenn Sie nicht sicher sind, was der beste Code auf den Computern ist, sollten Sie alle drei Quellverzeichnisse auf einen Computer kopieren und dann Datei für Datei zusammenführen. Werkzeuge zusammenführen .

Eine andere Möglichkeit wäre, ein Git-Repo auf einem Computer zu erstellen und Quellen von einem anderen Computer zu kopieren, die Git-Repo-Dateien zu überschreiben oder sie einfach einem neuen Zweig hinzuzufügen und dann die Zusammenführung von Git zu verwenden . Für Windows bevorzuge ich den Tortoise Git-Client, um alle grundlegenden Funktionen zur Versionierung zu erledigen.

Wie für die Metadaten zu kopieren, wie von anderen vorgeschlagen, können Sie verwenden rsync -t, cp --preserve=all. Für FTP-Übertragungen können Sie verwenden scp -p.

Ich habe sicherlich vor, mercurial zu verwenden und es zu versionieren, aber das Datum, an dem ich mich zuletzt mit einem Satz von Code befasst habe, ist wichtig für die Entscheidungsfindung beim Zusammenführen. Milind R vor 9 Jahren 0
0
ITProStuff

Sie können rsync zwischen den beiden Linux-Computern verwenden. Die Zeitstempel bleiben unverändert.
Unter Windows können Sie die Dateien mithilfe von Robocopy kopieren, ohne die Zeitstempel zu ändern. Vielleicht können Sie die Dateien auch von einem FTP-Server in Ihrer Linux-Box nach Windows kopieren.

Bewahrt FTP Metadaten auf Milind R vor 9 Jahren 0
Ja, aber auf dem FTP-Server muss ein Befehl unterstützt werden, um Zeitstempel beizubehalten. Ich kann mich nicht erinnern, was der Befehl war, aber ich denke, dass neue Versionen von FTP-Servern dies unterstützen sollten. Versuche es. ITProStuff vor 9 Jahren 1
Ja, der Befehl ist MDTM, der die Änderungszeit erhält. Milind R vor 9 Jahren 0
0
Karel Vlk

Unter Linux (und anderen Unix-ähnlichen Betriebssystemen) können Sie Dateien von und zu einem Flash-Laufwerk oder von einem SMB / FTP-Server kopieren

cp -p 

Das sollte Zeitstempel bewahren.

Ich weiß nicht, ob Zeitstempel beim Hochladen auf den Server beibehalten werden können.