Robocopy - Ungeänderte Dateien als geändert angesehen

phase11

Cadet 2nd Year
Registriert
Okt. 2011
Beiträge
28
Hallo zusammen,

Ich nutze schon sehr lange Robocopy zum Erstellen von Backups von Daten und es hat immer wunderbar funktioniert.
Nun habe ich ein Synology NAS und ich wollte meine Daten per Robocopy auf das NAS bringen. Das klappt bei einem Durchgang. Bei einem weiteren Durchgang werden aber Dateien als geändert angesehen, die nicht geändert wurden und daher unnötigerweise doppelt kopiert. Und zwar nicht in Ausnahmefällen, sondern bei allen Dateien, sodass hunderte Gigabyte kopiert werden, obwohl ein Inkrement vielleicht nur 100 Megabyte groß ist.

So, bei den Robocopy Experten klingelt es schon. Aber leider Fehlanzeige, folgende übliche Lösungen haben mir nicht geholfen:
  • /fft (FAT Zeit mit zugelassener 2 Sekunden Ungenauigkeit, weil SMB da wohl nicht so genau ist)
  • /dst für Zeitverschiebungsbeachtung (NTFS vs. UNIX Geschichte)
  • block size = 4096 in der /usr/syno/etc/smb.conf gesetzt, damit Blocksize gleich ist (normal ist 1024 auf NAS)
Die Vorschläge habe ich in allen Kombinationen probiert.

Interessant ist noch, dass im Log immer eine falsche Quelldateizeit eingetragen ist. Manchmal liegt die Zeit um eine, manchmal um zwei Stunden vor der Zeit, die im Eigenschaftenfenster der Datei angezeigt wird.
Noch interessanter ist dann, dass Dateien, die ich jetzt neu erstelle, einwandfrei funktionieren, auch ohne den genannten Switches und auch mit allen Blockgrößen UND obwohl auch hier im Log der Zeitstempel zwei Stunden vor dem liegt, der im Eigenschaftenfenster der Datei angezeigt wird.

Es klingt so dermaßen nach UTC und dann mal +1, mal +2 wegen Zeitzone und Sommer-/Winterzeit. Aber wie gesagt hat mir /dst nicht geholfen und ich habe bei PC und NAS die gleiche Zeitzone eingestellt und den gleichen Zeitsynchronisierungsserver.

Ich würde mich riesig freuen, wenn jemand schauen könnte, was das Log in Durchgang 1 und 2 ausspuckt, wenn er eine alte, mehrere MB große Datei von einer NTFS Platte mit 4096 Bit Blockgröße auf ein SMB Share per Robocopy kopiert.

Diesen Befehl verwende ich:
Code:
set s=C:\Beispiel
set t=D:\Beispiel
set log=C:\beispiel.txt
robocopy "%s%" "%t%" /z /copy:DAT /dcopy:T /mir /xd "$RECYCLE.BIN" "System Volume Information" "RECYCLER" /fft /dst /r:10 /w:10 /unilog:"%log%" /v /ts /np

Dateien sind dann im Quell- und Zielordner gleich (wenn ich mit Eigenschaftsfenster schaue):
alt.zip mit Zeitstempel: 19:14:27
neu-groesser_als_block.txt mit Zeitstempel: 23:18:05
neu-kleiner_als_block.txt mit Zeitstempel: 23:03:35

Im Log hingegen:
Code:
	      Geändert		   1.9 m 2009/05/16 17:14:27	alt.zip
	        Gleich		    5028 2013/05/08 21:18:05	neu-groesser_als_block.txt
	        Gleich		       1 2013/05/08 21:03:35	neu-kleiner_als_block.txt

Windows 8 Pro 64bit, NTFS Platte mit 4096 Bit Blockgröße, Synology DS413j mit DSM 4.2
Ergänzung ()

Ich habe mir direkt nochmal die Eigenschaftsfenster der Dateien angeschaut und erschreckt folgendes festgestellt:

Das Änderungsdatum liegt VOR dem Erstelldatum.

Die Platten, von denen ich auf das NAS kopiere sind selber Backup Platten. Hier muss ein Robocopy Befehl früher Attribute falsch gesetzt haben.
Also z.B.: Datei erstellt auf PC 1.1., geändert auf PC 2.1., Robocopy gemacht am 3.1., danach: Erstelldatum 3.1., Änderungsdatum 2.1.

Was kann ich nun tun?
/fixtim Switch probieren?
Ich wollte eigentlich so viel wie möglich original belassen, da mir wichtig ist zu wissen wann Fotos erstellt oder bearbeitet wurden auf den PCs damals, von denen ich die Robodopy Backups auf die Platte gemacht habe. Wobei das jetzt mit den verdrehten Daten ja eh nicht mehr hinkommt :( . Extrem ärgerlich!
Ergänzung ()

Halt! Nochmal einen Schritt zurück.. es macht scheinbar nichts, wenn das Erstelldatum nach dem Änderungsdatum liegt. Wenn ich die Testdateien erst per Drag & Drop auf das NAS kopiere, ist überall das Erstelldatum der AKTUELLE Zeitstempel. Das Änderungsdatum liegt dann bei allen Dateien davor. Robocopy bemängelt anschließend immer noch nur die oben genannte eine Datei, obwohl ich nun keine Unterschiede feststellen kann.
Ergänzung ()

P.S.: Und ich habe mal einen anderen Ordner probiert mit Dateien, wo das Änderungsdatum nach oder gleich dem Erstelldatum ist - gleiches Problem.

Also sind wir wieder beim Anfang. Nicht geänderte Dateien werden als geändert angesehen, die üblichen Robocopy Switche helfen nicht.
 
Zuletzt bearbeitet:
ich glaub du gehst das zu kompliziert an....schonmal über Verwendung des Archivbits nachgedacht?
 
Danke für die schnelle Antwort.
Das Archivbit hat Nachteile - z.B. wenn ich per Robocopy an verschiedene Orte kopieren will, es aber nur einmal geht (weil die Quelldateien danach nicht mehr als geändert markiert sind). Ich würde dann immer fürchten, dass meine Backups nicht vollständig sind.
Theoretisch, wenn ich nur vom PC aufs NAS sichere (und ein Backup vom Backup zur Aufbewahrung an einem physikalisch anderen Ort, was ich eigentlich vorhatte, weglasse), dann ginge es vllt mit dem Archivbit. Aber... :) - aber es muss doch auch normal möglich sein. Mein Problem muss doch einen Grund haben, der sich finden und beheben lässt. Da bin ich zu neugierig für einen Workaround, der mir auch noch meine Datensicherheitspläne durchkreuzt :)
 
Dort wird /fft genannt, den habe ich aber wie gesagt schon probiert.

Bei mir steht auch nicht "neuer" oder "älter", sondern "geändert". UND es tritt irgendwie nur bei alten Dateien auf und nicht bei welchen, die ich z.B. gestern erstellt oder geändert habe. Dort sagt er "gleich", sogar unabhängig von /fft.

edit:
Sowohl mit FilePro bei Ordnervergleich wird "identical" angezeigt als auch sind die Hashwerte identisch (wobei ich aber nicht weiß ob hier alle Dateiattribute etc. mit reinzählen)
FreeCommander und FreeFileSync sagen auch identisch / synchonisiert.
Ergänzung ()

Wichtige Erkenntnis:
Ich konnte das Problem jetzt auch mit den neuen Dateien reproduzieren - und zwar wenn ich ein Leerzeichen in die Dateinamen einfüge.
Aber das kann es doch wohl kaum sein?!? Ich muss doch jetzt nicht alle Leerzeichen in meinen Tausenden von Dateien zu z.B. Unterstrichen ändern? Was läuft da auf dem NAS schief? Jemand eine Idee? Im Internet finde ich zu Problemen mit Leerzeichen in Dateinamen bei Robocopy rein gar nichts. Oder sollte ich ins NAS-Forum posten?
Ergänzung ()

Oh Mann. Wenn ich die Dateinamen wieder ändere zu ohne Leerzeichen, funktioniert es trotzdem nicht mehr. Das macht doch jetzt überhaupt keinen Sinn mehr. Also die gestern erstellten Dateien, die er als "gleich" erkannt hat, werden jetzt nach zweimaliger Namensänderung als "geändert" angesehen. Also nicht beim ersten Robocopy Durchlauf, sondern auch bei folgenden. Das kann doch nicht sein.
 
Zuletzt bearbeitet:
welches nas ist es genau, weisst du welches dateisystem intern verwendet wird?

edit: steht da ja Synology DS413j, das müsste sich ja rausfinden lassen
 
Zuletzt bearbeitet:
Ext4 wird verwendet.

Ich habe nochmal rumprobiert wie mein Problem am einfachsten reproduzierbar ist:
In lokalem NTFS Ordner eine neue Textdatei erstellen. Und dann noch eine. Die zweite dann umbenennen und kann man auch wieder zurückbenennen. Dann erst Robocopy von lokalem Ordner aufs per CIFS Share als Netzlaufwerk eingebundene Ext4 NAS (Blockgröße egal, /fft egal). Beim ersten Durchlauf werden beide Dateien kopiert. Beim zweiten und jedem folgenden Durchlauf wird trotz keiner Änderungen die Datei erneut kopiert, die man schon vor dem ersten Durchlauf umbenannt hat.
Bei NTFS->NTFS oder Ext4->Ext4 tritt dieses Problem nicht auf.
 
Zuletzt bearbeitet:
Neenee, dann würde er sich ja auch beschweren über einen unbekannten switch / command. Im Log stehen die genutzten Switches drin, dort ist auch /FFT vorhanden.
Außerdem - und das hilft bei der Fehlereingrenzung - geht es bei den Leuten, denen /fft hilft, um Dateien, die fälschlicherweise als "neuer" oder "älter" angesehen werden. Da geht es nicht um "geändert". Und obendrein gibt es bei erstellten und nicht umbenannten Dateien ja gar kein Problem. Erst wenn man sie umbenennt werden sie fortan immer als geändert angesehen. Falls Zeitstempeldifferenzen zwischen NTFS / Ext4 vorliegen sollten, würde sich die nicht umbenannte Datei ja genauso verhalten.
Ich glaube also, dass sich Zeitstempel als Ursache ausschließen lassen. Denn bei Umbennenung ändert sich auch weder Erstelldatum, Änderungsdatum oder Zugriffsdatum.
Nächster Punkt wäre die Blockgröße, aber das hatte ich ja auch probiert.

Was wird noch geprüft bei Dateien, um sie zu vergleichen?
 
Ein interessantes Phänomen, das mich auch interessiert.

In meiner Umgebung, NAS + PC + Notebook, nutze ich auch gerne Robocopy in Verbindung mit dem YARCGUI.
Der Aufruf in Verbindung mit dem /m (Mirror) funktioniert gut und es werden nur die wirklich veränderten Dateien kopiert auf das NAS.

Als zwingende Voraussetzung hierfür sehe ich die Nutzung des identischen Zeitserver aller beteiligten Heimnetzgeräte, also Router, PC, NAS und auch das Notebook. In meinem Netz ist es der "ptbtime2.ptb.de" aus Braunschweig. Dies verhindert eventuelle Unterschiede der beteiligten Geräte.

@TO

Hast Du überall den identischen Zeitserver eingestellt ?
 
FBrenner schrieb:
Das ist ein Problem beim Kopieren auf NAS. Ich habe das bei meiner Qnap ebenfalls.
http://itaffinity.wordpress.com/2013/01/05/microsoft-robocopy-vs-linux-nas-robocopy-pitfalls/

Die Schritte bin ich vorm Erstellen dieses Threads schon durchgegangen, hatte ich im ersten Post ja geschrieben. Dort scheint sein Problem gelöst, bei mir jedoch nicht.

@TO

Hast Du überall den identischen Zeitserver eingestellt ?
Bezüglich Zeitserver: Ja, hatte ich auch im ersten Post geschrieben. Dürfte mit /fft durch die +/- 2 Sekunden aber auch nichts ausmachen. UND die Dateien werden dann als neuer/älter gesehen, bei mir jedoch als "geändert".

Wie das mit iSCSI LUN geht muss ich mir mal ansehen.
edit: Das scheint eher eine andere Art der Anbindung zu sein. Das klingt nicht danach, als wenn die Datei irgendwie anders gespeichert wird und Robocopy dann bei einem Vergleich die Datei nicht mehr als "geändert" ansieht. Oder?
 
Zuletzt bearbeitet:
Also der Umweg über iSCSI hat das Problem gelöst, aber die Lösung hat signifikante Nachteile.

Anders als in meinem vorigen Post ist iSCSI nicht einfach eine andere Art der Anbindung zum bestehenden Ext4 Dateisystem auf dem NAS, sondern man erstellt ein iSCSI LUN und Target, verbindet sich vom PC aus zu diesem Target und dann erscheint der iSCSI Speicher (den hat man vorher auf z.B. 100 GB gesetzt) als Datenträger in der Windows Datenträgerverwaltung, so dass man diesen per NTFS formatieren kann!

Nachteile: Was ich vorher auf dem NAS per CIFS eingebunden hatte, waren gemeinsame Ordner, auf die auch einfach über die Weboverfläche der NAS (DSM bzw. File Station) und vor allem per SFTP oder WebDAV, auch über das Internet, zugegriffen werden konnte. Das ist jetzt nicht mehr möglich.
(Port Forwarding auf 3260 sicher möglich, aber Übertragung ist unverschlüsselt -> No Go; außerdem damit immer noch nicht mit z.B. Android Smartphone zugreifbar, auch im LAN nicht. P.S.: Für Zugriff von entferntem Windows PC könnte man das iSCSI Volume mit TrueCrypt verschlüsseln, dann wäre wohl auch die Übertragung sicher, aber das bringt neue Nachteile mit sich und wäre ein Workaround für einen Workaround - das sollte wirklich nicht sein. Das gleiche gilt für VPN.)

Über Lösungsvorschläge, wie man NTFS-robocopy->Ext4-NAS hinbekommt würde ich mich also immer noch freuen. Bei vielen Benutzern scheint dies ja tadellos zu funktionieren. Ich denke also immer noch, dass es eigentlich gehen muss.

Trotzdem ein großes Dankeschön an FBrenner! Als ich letztens im Synology Wiki über iSCSI gestolpert bin, habe ich mich nur ans Ausprobieren getraut, weil du es hier schon als Workaround genannt hattest.
 
Zuletzt bearbeitet:
evtl mal das NAS auf factory zurücksetzen, wahrscheinlich ist schon alles mögliche verfrickelt mittlerweile;)
 
Gute Idee, so lange ich mit Robocopy noch keine relevanten Backup Daten auf das NAS bekommen konnte :)
Erneute Formatierung und Installierung läuft grad - ich werde berichten.
 
Hat leider nicht geholfen.

In einem anderen Forum wurde ich auf diesen Thread hingewiesen: http://social.technet.microsoft.com.../thread/6eba1f81-8666-42ce-9aaa-e9cf8814c64f/
Was darauf hindeutet, dass es Windows 8 spezifisch ist, weil entweder Robocopy verändert wurde oder Daten vom System "berührt" werden und sie so immer als geändert gelten. Aber die dort angesprochenen Workarounds habe ich nicht ausprobiert. Wenn ich mich recht entsinne war es z.B. Archiv Flag ignorieren (/copy:DT) oder eine alte Robocopy Version verwenden, was es zu Server 2003 Zeiten noch als einzelnes Tool zum downloaden gab. Aber das erscheint mir auch seltsam, weil wie ich geschrieben habe unangetastete Dateien ja durchaus als gleich angesehen werden.

Ich nutze nun erstmal die iSCSI Lösung und hoffe auf ein Fix von Robocopy mit Windows 8.1 (falls es denn daran liegt).
Oder wenn ich weitere Erkenntnisse habe, sage ich hier Bescheid.
 
Zumindest wäre es aus meiner Sicht eine Überlegung wert, ob Du nicht ein anderes Produkt probierst. wie etwa Teracopy oder Fastcopy.

Teracopy beherrscht das selektive Übertragen der geänderten/neuen Dateien im Netz zum NAS.
 
Zurück
Oben