Ich habe eine VM mit XP, auf der Dateien in zufälligen Momenten hochgeladen werden. Ich brauche ein Skript oder Dienstprogramm für die Befehlszeile, das beispielsweise alle X Minuten ausgeführt wird undBEWEGENAlle hochgeladenen Dateien in einem freigegebenen Verzeichnis auf einer Win7-Box.
Nun, der Befehlszeilenbefehl move
läuft nicht über mehrere Laufwerke hinweg, und erst recht nicht über freigegebene Dateien. (Und er gibt die äußerst hilfreiche Meldung aus Access denied.
.)
Ich könnte
copy src desr_share
rm src
…aber hier ist der schwierige Teil:
Wenn der Kopierbefehl ausgeführt wird, kann es passieren, dass gleichzeitig eine Datei hochgeladen wird. Der copy
lädt möglicherweise nur einen Teil der Datei hoch oder überspringt sie vollständig und fährt fort. Später, wenn der rm
eintritt, wird die Datei möglicherweise vollständig hochgeladen und der rm
löscht sie, ohne dass sie ordnungsgemäß an das Ziel kopiert wurde.
Ich brauche also etwas, das über die move
Semantik verfügt (eine Datei kopieren und nur bei Erfolg löschen), das aber maschinenübergreifend funktioniert.
Irgendwelche Vorschläge?
PS. Es macht mir nichts aus, wenn eine Datei nur teilweise verschoben wird, solange sie danach nicht gelöscht wird. Ich erzwinge das Überschreiben aller Zieldateien und beim nächsten Durchlauf wird die Datei erneut vollständig hochgeladen.
Antwort1
Sehen Sie sich Robocopy an, das bei Win7 Standard ist und in einem Microsoft Dev Kit für XP verfügbar ist.
Verwenden Sie robocopy /?
(oder robocopy /? > drive:\path\robocopy_options.txt
) für Optionen.
Windows 7:
http://technet.microsoft.com/en-us/library/cc733145%28v=ws.10%29.aspx
Windows XP:
http://www.microsoft.com/en-us/download/details.aspx?id=17657#Requirements