it-swarm.com.de

Wie werden Dateiattribute beim Kopieren von Dateien in Windows beibehalten?

Unter Linux können wir einfach Folgendes tun:

cp -pr directory

Wie mache ich das in Windows? Kann man das im Windows Explorer machen? Vorschläge für GUI-Tools?

Es wäre das Beste, wenn ich die NTFS-Berechtigungen und die Erstellungs-/Änderungs-/Zugriffszeit beibehalten könnte. Zumindest muss ich das Änderungsdatum für die Dateien und der Verzeichnisse beibehalten. Die Kopie von Windows Explorer behält das Änderungsdatum für Verzeichnisse nicht bei.

39
netvope

In Windows gibt es keine einfache Möglichkeit, dies zu tun. Es gibt mehrere Programme, die behaupten, das Erstellungsdatum von Dateien beibehalten zu können.
Hier sind einige Programme, die den Trick machen könnten http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html

Nur mit dem Windows Explorer ist das nicht möglich. Wenn Sie die Dokumentation für CopyFile ( http://msdn.Microsoft.com/en-us/library/aa363851%28VS.85%29.aspx ) Sie werden sehen, es heißt:
Dieser Artikel sollte die Semantik in Bezug auf die Erstellungs-/Änderungs-/Zugriffszeiten von Dateien dokumentieren.

Erstellungszeit: Wenn die Zieldatei bereits vorhanden ist, bleibt die Erstellungszeit erhalten, andernfalls wird sie auf die aktuelle Systemzeit gesetzt.
Letzter Änderungszeitpunkt: Wird immer vom Änderungszeitpunkt der Quelldatei kopiert.
Letzte Zugriffszeit: Stellt immer die aktuelle Systemzeit ein.

5
Daisetsu

RoboCopy kann die Zeit für Verzeichnisse mit der Option/DCOPY: T beibehalten, dies funktioniert jedoch nur in Vista und neueren Versionen. Es können auch ACLs beibehalten werden. Alternativ kann FastCopy so konfiguriert werden, dass Verzeichniszeiten, ACLs und ADSes .

20
afrazier

... oder Sie können einfach ein Zip-Archiv erstellen (mit der Komprimierungsmethode "Speichern") und dann die Dateien entpacken, in die Sie sie kopieren möchten. Die Datums-/Uhrzeitattribute stimmen mit den Originaldateien überein.

19
Silkworm

Robocopy-Befehlszeilentool (in den meisten Windows-Versionen enthalten)
Auf meinem Windows 10-Computer befindet es sich unter C:\Windows\System32

Aus Wikipedia kann es mit den folgenden Optionen verwendet werden, um die Dateiundzu speichern Zeitstempel sowie andere Attribute:

Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPYALL /E /R:0

  • /DCOPY:T ursprüngliche Verzeichnis-Zeitstempel beibehalten (erfordert Version XP026 oder höher)
  • /E: Verzeichnisse rekursiv kopieren, einschließlich leerer Verzeichnisse
  • /R:0: Gesperrte Dateien nicht wiederholen (der Standardwert für die Anzahl der Wiederholungsversuche bei fehlgeschlagenen Kopien beträgt 1 Million),

  • /COPYALL: Kopieren Sie alle Dateiinformationen.
    (entspricht /COPY:DATSOU, wobei

    • D = Daten,
    • A = Attribute,
    • T = Dateizeitstempel ,
    • S = Sicherheit = NTFS-ACLs,
    • O = Besitzerinfo,
    • U = Prüfungsinformationen),

Wenn SienurDatums- und Verzeichniszeitstempel beibehalten möchten, abernichtleere Unterverzeichnisse kopieren möchten undnotmöchte, dass andere Attribute erhalten bleiben, dann können Sie Folgendes verwenden:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

dabei kopiert /Snicht leereUnterverzeichnisse

Um die vollständige Syntax anzuzeigen, geben Sie an einer Eingabeaufforderung robocopy /? ein oder werfen Sie einen Blick auf die folgenden Blogeinträge: https://ss64.com/nt/robocopy.html und https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/

Ein Beispiel für einen Befehl, den ich kürzlich ausgeführt habe:
Robocopy D:\ C:\D_backup /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

Beachten Sie, dass beim Ausschließen von 2 Unterverzeichnissen das Flag /XD zweimal verwendet werden muss. Außerdem werden beim zweiten Verzeichnisausschluss Anführungszeichen verwendet, da der Verzeichnisname Leerzeichen enthält.

Schließlich können Sie das Flag /L hinzufügen, um den Befehl zu testen, bevor Sie ihn für echt halten. Auf diese Weise können Sie sicherstellen, dass keine Verzeichnisse/Dateien kopiert (oder entfernt) werden, die Sie nicht möchten, und dass Ihr Befehl keine Fehler enthält.

Edit: gotcha beim Kopieren von einem Root-Verzeichnis (aka Laufwerk) in einen Ordner (Nicht-Root-Verzeichnis)

Nach dem Ausführen des obigen Beispielbefehls war das Verzeichnis nicht sichtbar! (Obwohl in Windows 10 show hidden files und show system files überprüft wurden!) Der folgende Befehl gemäß https://serverfault.com/a/455029/399723 wurde behoben diese:

attrib -h -s C:\D_backup

Alternativ kann durch Hinzufügen des Codes /A-:SH "das ausgeblendete Attribut aus Systemdateien entfernen" verhindert werden, dass das Verzeichnis gemäß https://serverfault.com/a/565804 an erster Stelle ausgeblendet wird/399723 . Siehe auch https://ss64.com/nt/robocopy.html .
Diese Beschreibung wirft als Lösung mehr Licht auf diese Option.

Robocopy D:\ C:\D_backup /A-:SH /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

Andere Software:

Alternativ können Sie eine GUI-Version von robocopy herunterladen, wenn Sie die Befehlszeile nicht verwenden möchten.

Ein weiteres Windows-Dienstprogramm ist XCopy , obwohl es in Windows 10 enthalten ist, wird es nicht mehr empfohlen. Siehe den Link für Fallstricke.

Die Wikipedia-Seite für RoboCopy (oben in diesem Beitrag verlinkt) listet andere Software auf, die verwendet werden kann.

5
SherylHohman

Synchronize It! 3.5 speichert alle Zeitstempel (Dateien und Ordner, Änderung und Erstellung). Es ist die einzige Software, die ich unter Windows XP kenne und die das neben Robocopy einwandfrei macht, und ich habe viele ausprobiert. Beachten Sie jedoch, dass es zu beschädigten Dateien mit Quelldateien kommen kann, die mit Software wie FlashGet oder Orbit Downloader heruntergeladen wurden (die resultierenden Dateien haben dieselbe Größe, aber nur 25 KB werden tatsächlich kopiert - der Rest wird mit Nullen gefüllt). Ich fragte den Ersteller der Software, ob er herausfinden könne, warum, aber er hatte keine Ahnung. Ich vermute, es hat damit zu tun, dass solche Software Dateien in kleinen Paketen herunterlädt (um die Geschwindigkeit zu optimieren) und meine Datenpartition stark fragmentiert ist.

Robocopy XP026 ist zwar in Windows Vista enthalten, funktioniert aber unter Windows XP. Suchen Sie nach "Robocopy XP026", oder ich kann die Datei hier senden, da sie nicht leicht zu finden ist. Oder Sie können Robocopy GUI installieren und dann im Ordner System32 nach der Datei robocopy.exe suchen, um sie über die Befehlszeile zu verwenden. Die Datei, die ich habe, ist 208kB und die Versionsnummer ist 5.1.2600.26.

Es scheint jedoch einen Fehler im "Backup-Modus" zu geben:

http://msmvps.com/blogs/martinzugec/archive/2008/03/03/ugly-bug-in-robocopy-ignoring-security-on-file-level.aspx

Die Robocopy-Version XP027 hat diesen Fehler anscheinend nicht mehr, funktioniert aber unter Windows XP nicht mehr.

4
Gabriel

RoboCopy sollte dies mit dem COPYALL-Schalter tun können. Sie können die GUI-Version von Microsoft Technet abrufen.

3
Russ Warren

FastCopy kann dies und ist kostenlos.

1
yarun can

Der einfachste Weg für mich ist bisher die "send to" -Methode. Es werden keine externen Anwendungen benötigt. Nach meiner Erfahrung werden alle ursprünglichen Dateiattribute beibehalten.

Die Methode, die ich zuvor verwendet habe, war die Komprimierungs-/Zip-Ordner-Methode. Dies wird jedoch sicherlich länger dauern, da die Dateien nicht nur kopiert, sondern auch verarbeitet und komprimiert werden, sowohl beim Komprimieren als auch beim Dekomprimieren.

%appdata%\Microsoft\Windows\SendTo
oder. C:\Users\_______\AppData\Roaming\Microsoft\Windows\SendTo

Wenn Sie dem Ordner, in den Sie sie kopieren möchten, eine Verknüpfung hinzufügen, wird das Element in Ihrem Menü sendto angezeigt, wenn Sie mit der rechten Maustaste auf eine zu kopierende Datei klicken.

1
tspmtel
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

Ich bin nicht sicher, welcher Schalter das Dateidatum beibehält, aber das funktioniert. Dann komprimiere ich das Verzeichnis C:\temp\Pics, in dem auch die oben erwähnten Dateidaten gespeichert sind.

1
dmaier

Das schaffe ich mit

rsync -avu --modify-window = 3602 Quellverzeichnis/Zielverzeichnis /

(Dies wird wirklich als Synchronisierungstool von einem Verzeichnis zu einem anderen Spiegel verwendet. Die Option timewindow dient dazu, Probleme zu vermeiden, wenn Windows-Systeme im Vergleich zu Linux-Systemen die Zeit um 1 Stunde verschieben, um Sommerzeit usw. zu sparen.)

in einer Cygwin-Umgebung in Windows oder einer virtuellen Linux-Maschine in Windows mit eingebundenen Windows-Laufwerken (z. B. mit virtualbox)

NB cygwin und virtualbox sind beide kostenlos und ermöglichen es Ihnen, Linux-Funktionen unter Windows in geringerem oder größerem Umfang zu nutzen - beide erfordern ein wenig Einrichtung - insbesondere virtualbox, haben aber viele Vorteile.

Mein eigenes Problem war, dass Dateien die richtige Zeit haben, Verzeichnisse jedoch nicht. rsync hat die Daten in den Verzeichnissen sowie die Daten in den Dateien aussortiert.

0
tom

xcopy funktioniert gut dafür. Geben Sie einfach das Flag/k an, um Attribute zu kopieren.

Syntax
xcopy Source [Destination] [Optionale Parameter]

Der Befehl xcopy kann eine oder mehrere Dateien oder Verzeichnisbäume von einem Speicherort an einen anderen kopieren. Der Befehl xcopy ist in allen Windows-Versionen von Windows 95 bis Windows 8 enthalten.

0
Chris

Dieser Befehl kopiert den gleichen Zeitstempel für Dateien. Beachten Sie, dass für die Ordner selbst nicht genau dieselbe Zeitstempelung ausgeführt wird. Beachten Sie auch, dass ich sowohl Quelle (Temp1) als auch Ziel (Temp2) in Anführungszeichen gesetzt habe. Dies erfolgt für den Fall, dass die Pfade Leerzeichen enthalten. Ich habe keine Leerzeichen, aber ich dachte, ich sollte es für Worst-Case-Szenarien einschließen.

robocopy /E /copy:DAT "C:\Temp1" "c:\Temp2"

So behalten Sie die Zeitstempel auch für Ordner bei:

robocopy/E/copy: DAT/dcopy: DAT "C:\Temp1" "c:\Temp2"

0
pablo

Verwenden Sie diese Dienstprogramme, um Ordner auf einfache Weise zu verschieben und Erstellungsdatum und -uhrzeit beizubehalten

http://lantechsoft.com/data-copy.html

Eine andere, bei der Daten beim Kopieren von Dateien erhalten bleiben.

http://technocomsolutions.com/data-copy-tool.html

0
Eric

Es ist einfach, Ordner und Verzeichnisse zu verschieben und trotzdem das Erstellungsdatum beizubehalten. Nur halten Shift und ziehen Sie den Ordner an den neuen Ort (Befehl verschieben). Das Änderungsdatum ist das aktuelle Datum, aber das Erstellungsdatum behält das ursprüngliche Datum bei.

0
Davidus428