Schnellste Methode zum Kopieren von Dateien


15

Wenn unser Build-Server (CCNET) erfolgreich erstellt wurde, werden alle ASP.NET-Websitedateien in das virtuelle Verzeichnis (% output_dir%) kopiert, sodass Nicht-Entwickler die neueste Version der Website anzeigen / testen können. Am Ende des Builds wird die folgende Bat-Datei ausgeführt.

rmdir /s /q "%output_dir%"
mkdir "%output_dir%"
xcopy "%source_dir%*"  "%output_dir%" /e /c /i /q /-y

Das Problem ist, dass das Kopieren langsam ist und ich mich gefragt habe, ob in Windows 2008 Kopierbefehle verfügbar sind, die schneller als xcopy sind. Die Quelle und das Ziel befinden sich auf demselben Laufwerk. Nachfolgend finden Sie die Argumente, die wir beim Kopieren verwenden.

/e = copies directories and sub directories including empty ones.
/c = continues copying even if there are errors
/i = if destination does not exist destination is directory
/q = don't display filenames
/-y = confirm overwrite

Antworten:


21

Nur aus anwendungstechnischer Sicht , Xcopy oder Robocopy finden Sie ähnliche Ergebnisse. Ich habe einige Tests mit einer 64-Bit-SP2-Box von Windows Vista durchgeführt, um einige Vergleiche anzustellen. Alle Kopien wurden zwischen einer internen Sata II-Festplatte mit 7200 U / min und einem externen USB 2.0-Laufwerk oder, wo angegeben, auf demselben internen Laufwerk selbst durchgeführt. Es wurde kein spezielles Setup durchgeführt (entscheide dich, wenn dies den Test ungültig macht / validiert), nur um den Befehl zur Ausführung in eine Batch-Datei einzugeben. PowerShell wurde zum Erfassen der Start- und Stoppzeiten verwendet. Nach ein paar Pässen hier sind die Durchschnittswerte der Werkzeuge, mit denen ich gespielt habe:

Datei: 732.909.568 Byte (698 MB), 1 ISO-Datei, die in ein anderes Verzeichnis auf derselben internen Festplatte kopiert wurde.

copy      6 secs (ex. copy G:\folder1\* G:\folder2\)
xcopy     6 secs (ex. xcopy G:\folder1 G:\folder2 /I /E /Y /R)
robocopy  6 secs (ex. robocopy G:\folder1\ G:\folder2 /E /NP)
teracopy 28 secs (ex. TeraCopy.exe Copy G:\folder1\ G:\folder2\)
fastcopy 19 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=G:\folder2)  

Datei: 732.909.568 Byte (698 MB), 1 ISO-Datei auf externe USB-Festplatte kopiert.

copy     36 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy    35 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 36 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 36 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 38 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)  

Dateien: 45.039.616 Byte (42,9 MB) 5 zufällige Dateien, die auf eine externe USB-Festplatte kopiert wurden

copy      6 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy     5 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy  6 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 12 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy  6 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)

Dateien / Verzeichnisse: 1.087.180.800 Bytes (1.01 GB), 27 Dateien / 8 Verzeichnisse, die auf eine externe USB-Festplatte kopiert wurden.

copy     *Not included in test
xcopy    57 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 58 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 56 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 60 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)

Dies ist keineswegs ein vollständiger Test, sondern nur ein kurzer Blick auf einige der populärsten Tools in diesem Genre zeigt, dass Sie (nur unter dem Gesichtspunkt der Leistung) ziemlich sicher bei xcopy oder Robocopy bleiben. Auch die Robocopy-Option /NP(No Progress) spart Ihnen 0 Zeit. Das bedeutet jedoch nicht, dass Sie nicht von etwas anderem als xcopy profitieren können. Robocopy ist ein gutes Beispiel (aus Wikipedia ):

Robocopy zeichnet sich durch Funktionen aus, die über die integrierten Windows-
Befehle copy und xcopy hinausgehen, einschließlich der folgenden:

  • Möglichkeit, Netzwerkausfälle zu tolerieren und das Kopieren dort fortzusetzen, wo zuvor aufgehört hat (unvollständige Dateien werden mit einem Datumsstempel versehen, der dem 01.01.1980 entspricht, und enthalten einen Wiederherstellungsdatensatz, damit Robocopy weiß, wo fortzufahren ist).
  • Standardmäßig können Attribute, Besitzerinformationen, alternative Datenströme, Überwachungsinformationen und Zeitstempel korrekt kopiert werden, ohne dass zahlreiche häufig vergessene Befehlszeilenschalter erforderlich sind.
  • Möglichkeit, NTFS-ACLs korrekt zu kopieren (sofern / COPYALL angegeben ist) und das Windows NT-Sicherungsrecht (/ B) geltend zu machen, sodass ein Administrator ein gesamtes Verzeichnis kopieren kann, einschließlich Dateien, denen die Lesbarkeit für den Administrator verweigert wurde.
  • Persistenz standardmäßig mit einer programmierbaren Anzahl von automatischen Wiederholungsversuchen, wenn eine Datei nicht geöffnet werden kann.
  • Ein "Spiegel" -Modus, der Bäume synchronisiert, indem optional Dateien aus dem Ziel gelöscht werden, die in der Quelle nicht mehr vorhanden sind.
  • Möglichkeit zum Kopieren einer großen Anzahl von Dateien, bei denen das integrierte Dienstprogramm XCOPY andernfalls abstürzen würde.
  • Eine Fortschrittsanzeige in der Befehlszeile, die kontinuierlich aktualisiert wird.
  • Möglichkeit, lange Datei- und Ordnernamen mit mehr als 256 Zeichen - bis zu theoretisch 32.000 Zeichen - fehlerfrei zu kopieren.

5

Ich benutze normalerweise:

robocopy source dest /E /MIR

oder eine andere Variante der Parameter - vielleicht /NFL /NDL /NS /NC /NPpassend zum "leisen"


Ja, / NP ist ein Muss für schnelle Robokopien
Ivo Looser

Wenn du immer wieder genau den gleichen Inhalt wie in der Quelle erstellen möchtest, verwende ich / MIR oder / PURGE aus dem Robocopy-Befehl.
Ivo Looser

1

Durch das Eliminieren des Netzwerks haben Sie Ihre Tests tatsächlich stark eingeschränkt. Möglicherweise möchten Sie eine Netzwerkfreigabe verwenden, die einen Großteil der Verwaltungsarbeit ausmacht.

Darüber hinaus sollten Sie FTP verwenden und CIFS vollständig überspringen. Eseutil.exe ist ein weiteres Dienstprogramm, das Sie dort einsetzen können. (Ein Exchange-Dienstprogramm, das zusammen mit seinen vier abhängigen DLLs an anderer Stelle verwendet werden kann.)

Dann würde ich gerne Ihre Ergebnisse sehen.


1

Ich benutze XCopy für den gleichen Zweck. Was ich auch getan habe, war, diesem Server eine weitere Netzwerkkarte hinzuzufügen und sie in ein separates Subnetz zu stellen. Stellen Sie dann eine direkte Verbindung zu dem Server her, von dem ich Dateien übertrage. Auf diese Weise übertragen die beiden Computer die kopierten Daten über ein Subnetz, und die Benutzer können weiterhin über die zweite Netzwerkkarte zugreifen, die direkt mit dem LAN verbunden ist.


1

Sie sagen, die Quelle und das Ziel befinden sich auf demselben Laufwerk, aber befinden sich beide auf dem Buildserver?

Wenn der Build-Server der Speicherort der Quelle und des Ziels ist, können Sie den einen oder anderen Ordner auf ein anderes Laufwerk verschieben, möglicherweise auf einen anderen Controller.

Wenn der Build-Server nicht der Speicherort von Quelle und Ziel ist (Build-Ablagen befinden sich nicht immer auf dem Server, auf dem sie erstellt wurden), sollten Sie eine Aufgabe auf dem Server erstellen, auf dem sich die Quell- und Zielordner befinden. Dann starten Sie diese Aufgabe einfach per Fernzugriff.


1

Ich musste im Laufe der Jahre mehrere Kopien machen. Wir haben einen Windows Server 2008 R2-Computer mit einem einzigen Verzeichnis mit über 12 Millionen Bildern (ca. 400 GB).

Natürlich wäre es mir lieber, wenn es nicht so ein großes Verzeichnis wäre, ABER:

  • XCOPY verwaltet die Kopie des großen Ordners, stürzt jedoch ab, wenn versucht wird, aus dem großen Verzeichnis fortzufahren.
  • ROBOCOPY handhabt die Kopie ohne Probleme und ist eine viel schönere Erfahrung beim Kopieren, da es bessere Fortschrittsindikatoren bietet.
  • XCOPY in kleinen Verzeichnissen ist schneller.

Wie auch immer, ich dachte nur, ich würde meine Erfahrungen mit ihnen teilen, wegen der ungewöhnlichen Natur meines wirklich großen Verzeichnisses.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.