Performantes Kopieren von Dateien in C #?

Ich habe ein riesiges Verzeichnis mit ca. 500k JPG-Dateien und möchte alle Dateien archivieren, die älter als ein bestimmtes Datum sind. Derzeit dauert die Ausführung des Skripts Stunden.

Dies hat viel mit der sehr schlechten Leistung der GoGrid-Speicherserver zu tun, aber gleichzeitig bin ich sicher, dass Ram / CPU effizienter ist, um das zu erreichen, was ich tue.

Hier ist der Code, den ich habe:

var dirInfo = new DirectoryInfo(PathToSource);
var fileInfo = dirInfo.GetFiles("*.*");
var filesToArchive = fileInfo.Where(f => 
    f.LastWriteTime.Date < StartThresholdInDays.Days().Ago().Date
      && f.LastWriteTime.Date >= StopThresholdInDays.Days().Ago().Date
);

foreach (var file in filesToArchive)
{
    file.CopyTo(PathToTarget+file.Name);
}

Das Days (). Ago () Zeug ist nur syntaktischer Zucker.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage