2010-05-27 21:51:36 +0000 2010-05-27 21:51:36 +0000
43
43

Wie behält man die Dateiattribute bei, wenn man Dateien unter Windows kopiert?

Unter Linux können wir einfach tun:

cp -pr directory

Wie kann man das unter Windows machen? Kann es im Windows Explorer gemacht werden? Gibt es Vorschläge für ein GUI-Tool?

Am besten wäre es, wenn ich die NTFS-Berechtigungen und die Erstellungs-/Änderungs-/Zugriffszeit beibehalten kann. Zumindest muss ich das Änderungsdatum für die Dateien und die Verzeichnisse beibehalten. Die Kopie des Windows Explorers behält das Änderungsdatum für Verzeichnisse nicht bei.

Antworten (14)

23
23
23
2010-06-01 20:25:56 +0000

RoboCopy kann die mtime für Verzeichnisse mit dem Schalter /DCOPY:T beibehalten, aber das funktioniert nur in Vista und neuer. Es kann auch ACLs beibehalten. Alternativ kann FastCopy so konfiguriert werden, dass die mtimes von Verzeichnissen, ACLs und ADSes erhalten bleiben.

21
21
21
2012-03-05 14:33:18 +0000

… oder Sie können einfach ein Zip-Archiv erstellen (mit der Komprimierungsmethode “Store”) und dann die Dateien dort entpacken, wohin Sie sie kopieren wollten. Die Datums-/Zeitattribute sind die gleichen wie bei den Originaldateien.

10
10
10
2018-05-26 19:48:07 +0000

Robocopy-Befehlszeilentool (wird mit den meisten Windows-Versionen mitgeliefert) Auf meinem Windows 10-Rechner befindet es sich unter C:\Windows\System32

Aus Wikipedia , es kann mit den folgenden Optionen verwendet werden, um Zeitstempel von Dateien und Verzeichnissen sowie andere Attribute zu erhalten:

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

  • /DCOPY:T Original Zeitstempel von Verzeichnissen bewahren (erfordert Version XP026 oder höher)
  • /E: Verzeichnisse rekursiv kopieren, einschließlich leerer Verzeichnisse
  • /R:0: gesperrte Dateien nicht erneut versuchen (die Anzahl der Wiederholungsversuche bei fehlgeschlagenen Kopien ist standardmäßig auf 1 Million eingestellt),

  • /COPYALL: Alle Dateiinformationen kopieren, (entspricht /COPY:DATSOU, wobei

Wenn Sie nur Datums- und Verzeichniszeitstempel beibehalten wollen, aber keine leeren Unterverzeichnisse rüberkopieren wollen und keine anderen Attribute beibehalten wollen, dann können Sie verwenden:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

, wobei /S nicht leere Unterverzeichnisse kopiert

Um die vollständige Syntax zu sehen, geben Sie robocopy /? an einer Eingabeaufforderung ein, oder schauen Sie sich diese Blogbeiträge an: 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 Ausschluss 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 wirklich ausführen. Auf diese Weise können Sie sicherstellen, dass keine Verzeichnisse/Dateien kopiert (oder entfernt) werden, die Sie nicht wollen, und dass Ihr Befehl keine Fehler enthält.

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

Nachdem der obige Beispielbefehl ausgeführt wurde, war das Verzeichnis nicht sichtbar! (Obwohl show hidden files und show system files in Windows 10 aktiviert waren!) Der folgende Befehl gemäß https://serverfault.com/a/455029/399723 hat dies behoben:

attrib -h -s C:\D_backup

Alternativ kann das Hinzufügen von /A-:SH “hebt das Versteckt-Attribut von Systemdateien auf” verhindern, dass das Verzeichnis überhaupt erst versteckt wird, wie in https://serverfault.com/a/565804/399723 . Siehe auch https://ss64.com/nt/robocopy.html .
Diese Besprechung beleuchtet diese Option als Lösung näher.

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 nicht die Kommandozeile verwenden möchten.

Ein weiteres Windows-Dienstprogramm ist XCopy , obwohl es in Windows 10 enthalten ist, wird es veraltet. Siehe den Link für Probleme.

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

6
6
6
2010-05-27 23:04:39 +0000

Es gibt keine einfache Möglichkeit, dies in Windows zu tun.  Es gibt mehrere Programme, die behaupten, das Erstellungsdatum von Dateien beibehalten zu können.
Hier sind ein paar Programme, die den Trick machen könnten http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html (Defekter Link; nicht in der Wayback Machine).

Nur mit dem Windows-Explorer ist das nicht möglich. Wenn Sie sich die Dokumentation für CopyFile Funktion CopyFile (winbase.h) ansehen, werden Sie sehen, dass sie das Thema vermeidet.  Aber&nbsp Funktion CopyFile (Windows Developer Preview) (ein 2012 Archiv der gleichen URL) sagt:

Datei-Zeiten-Semantik

Dieser Artikel sollte die Semantik in Bezug auf die Dateierstellung/Änderung/Zugriffszeiten dokumentieren.

Erstellungszeit: Wenn die Zieldatei bereits existiert, wird ihre Erstellungszeit beibehalten, andernfalls wird sie auf die aktuelle Systemzeit gesetzt.
& > Letzte Änderungszeit: wird immer von der Änderungszeit der Quelldatei übernommen.
Letzte Zugriffszeit: wird immer auf die aktuelle Systemzeit gesetzt.

4
4
4
2011-07-26 15:54:51 +0000

Synchronize It! 3.5 behält alle Zeitstempel (Dateien und Ordner, Änderung und Erstellung). Es ist die einzige Software, die ich unter Windows XP kenne, die das einwandfrei macht, neben Robocopy, und ich habe viele ausprobiert. Aber Vorsicht, es kann korrupte Dateien mit Quelldateien erzeugen, die mit Software wie FlashGet oder Orbit Downloader heruntergeladen wurden (die resultierenden Dateien haben die gleiche Größe, aber nur 25kB werden tatsächlich kopiert - der Rest ist mit Nullen gefüllt). Ich habe den Ersteller der Software gefragt, ob er herausfinden kann, warum das so ist, 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 sehr stark fragmentiert ist.

Robocopy XP026 ist tatsächlich in Windows Vista enthalten, funktioniert aber auch unter Windows XP. Suchen Sie “Robocopy XP026”, oder ich kann die Datei hierher schicken, da sie nicht so leicht zu finden ist. Oder Sie können Robocopy GUI installieren und dann im Ordner “System32” nach der Datei robocopy.exe suchen, um sie von der Kommandozeile aus zu verwenden. Die Datei, die ich habe, ist 208kB groß und die Versionsnummer ist 5.1.2600.26.

Es scheint allerdings einen Fehler mit dem “Backup-Modus” zu geben:

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

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

3
3
3
2010-06-01 18:32:19 +0000

RoboCopy sollte mit dem COPYALL-Schalter dazu in der Lage sein. Sie können die GUI-Version von Microsoft Technet herunterladen.

1
1
1
2014-10-19 01:19:44 +0000

Der für mich bisher einfachste Weg ist die Methode “Senden an”. Sie benötigt keine externen Anwendungen. Meiner Erfahrung nach bleiben dabei alle ursprünglichen Dateiattribute erhalten.

Die Methode, die ich bisher verwendet habe, war die Komprimierung/Zip-Ordner-Methode. Allerdings dauert dies sicherlich länger, 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

Fügen Sie eine Verknüpfung zu dem Ordner hinzu, in den die Dateien kopiert werden sollen, und der Eintrag erscheint in Ihrem sendto-Menü, wenn Sie mit der rechten Maustaste auf eine zu kopierende Datei klicken.

1
1
1
2012-12-06 02:51:42 +0000

FastCopy kann dies tun und ist kostenlos.

1
1
1
2013-08-19 19:37:45 +0000
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

Ich bin mir nicht sicher, welcher Schalter das Dateidatum beibehält, aber das funktioniert. Dann zippe ich das Verzeichnis C:\temp\Pics, das ebenfalls das Dateidatum beibehält, wie bereits erwähnt.

0
0
0
2012-10-14 14:50:02 +0000

Es ist einfach, Ordner und Verzeichnisse zu verschieben und dabei das Erstellungsdatum beizubehalten. Halten Sie einfach die Umschalttaste gedrückt und ziehen Sie den Ordner an den neuen Ort (Befehl “Verschieben”). Das Änderungsdatum wird das aktuelle Datum sein, aber das Erstellungsdatum wird das ursprüngliche Datum beibehalten.

0
0
0
2014-05-02 08:34:44 +0000

Ich erreiche dies mit

rsync -avu –modify-window=3602 source_directory/ target_directory/

(dies wird wirklich als Synchronisierungstool von einem Verzeichnis zu einem anderen Mirror verwendet und die timewindow-Option dient dazu, Probleme zu vermeiden, wenn Windows-Systeme die Uhren wegen der Sommerzeit um 1 Stunde vorstellen usw. im Vergleich zu Linux-Systemen)

entweder in einer Cygwin-Umgebung innerhalb von Windows oder in einer virtuellen Linux-Maschine innerhalb von Windows mit eingebundenen Windows-Laufwerken (z.B. mit Virtualbox)

NB: Cygwin und Virtualbox sind beide kostenlos und ermöglichen es Ihnen, mehr oder weniger Linux-Funktionalität unter Windows zu nutzen - beide erfordern ein wenig Einarbeitung - besonders Virtualbox, haben aber viele Vorteile….

Mein eigenes Problem war, dass die Dateien die korrekte Zeit hatten, die Verzeichnisse aber nicht. rsync hat sowohl die Daten der Verzeichnisse als auch die Daten der Dateien korrigiert.

0
0
0
2014-01-01 07:59:10 +0000

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

Syntax xcopy Quelle [Ziel][Optionale Parameter]

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

0
0
0
2014-08-12 14:57:58 +0000

Dieser Befehl kopiert denselben Zeitstempel für Dateien. Beachten Sie, dass er nicht genau denselben Zeitstempel für die Ordner selbst vornimmt. Beachten Sie auch, dass ich sowohl um die Quelle (Temp1) als auch um das Ziel (Temp2) Anführungszeichen gesetzt habe. Dies geschieht für den Fall, dass in den Pfaden Leerzeichen vorkommen. Ich habe keine Leerzeichen, aber ich dachte, ich sollte es für den schlimmsten Fall einschließen.

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

Um die Zeitstempel auch für Ordner gleich zu halten:

robocopy /E /copy:DAT /dcopy:DAT “c:\Temp1” “c:\Temp2”

0
0
0
2013-02-11 13:33:03 +0000

Eine einfache Möglichkeit, Ordner zu verschieben und dabei Erstellungsdatum und -zeit zu erhalten, sind diese Hilfsprogramme http://lantechsoft.com/data-copy.html

Ein weiteres, bei dem das Datum beim Kopieren von Dateien erhalten bleiben kann. http://technocomsolutions.com/data-copy-tool.html