Самый быстрый способ перемещения большого количества файлов?


8

Мне нужно переместить около 320 000 файлов, 80 000 папок (всего 100 ГБ) данных. Некоторые файлы> 1 ГБ, но большинство <1 КБ.

Я посмотрел на самый быстрый метод копирования файлов, но я не уверен, насколько полезным будет какой-либо из них, моя проблема не в чистых скоростях передачи, а в том, насколько быстро Windows может справиться с IO из 320 000 файлов.

Как вы думаете, я буду видеть преимущества в скорости при использовании ксерокопии, робокопии, теракопии или фасткопии?

Нам потребовалось много времени (+ 12 часов), чтобы скопировать их один раз (с помощью робокопии), и я ненавижу делать это снова. Что я могу сделать, чтобы ускорить это?

Материал находится на внешнем диске USB 2.0.

Ответы:


9

Что-то вроде robocopy будет вашим лучшим выбором. USB-накопители не могут обрабатывать много ввода-вывода с самого начала.

Я перенес миллионы маленьких файлов на и с USB-накопителей с помощью Robocopy. Это требует времени, но оно выполняет свою работу.


3

Как сказал Мрденни, Robocopy будет лучше, отчасти из-за его надежности. Лучший совет, который я могу предложить, если вы уверены в чистоте перемещаемых файлов, - это убедиться, что антивирусное программное обеспечение отключено во время их перемещения. Вы действительно не хотите, чтобы все эти файлы сканировались.


1

Очевидно, что есть более быстрый путь, чем все упомянутое здесь. Быстрее, но менее гибко :-) Если вы поместили файлы в отдельный раздел, вы можете скопировать весь раздел на целевой диск.

Я не знаком ни с одним бесплатным Windows-инструментом для этой работы (инструмент с поддержкой VSS был бы идеальным), но наверняка вы можете загрузиться с Ghost CD или Partition Magic CD, или загрузить автономный CD с Linux. В Linux вы просто ddраздел, или ntfscloneесли это раздел NTFS.


0

Если бы я был тобой, я бы изменил внешний жесткий диск на Firewire, скорость передачи намного выше, чем USB2.

Я думаю, что, возможно, упаковка файлов в один «tar», а затем передача файлов сэкономит немного времени. Потому что это уменьшает время ввода-вывода, так как вы копируете только один гигантский файл, по сравнению с тысячами файлов, он также потребляет меньше ресурсов (на этапе копирования). Или вы можете передать поток tar прямо на ваш USB-накопитель.


Да, я знаю, что подход с одним tar определенно даст результаты, но не был уверен, что создание одного файла займет значительное время.
in.spite

Firewire хорош, но eSATA тоже может быть быстрее.
Chopper3

0

Я обнаружил, что наиболее эффективный способ скопировать большое количество файлов - это сначала направить их в файлы ISO, а затем скопировать ISO. Таким образом, диск не заботится о выдаче тысяч команд, необходимых для копирования файлов.

Конечно, это зависит от вашей структуры каталогов. Мне посчастливилось создать новый каталог с интервалами 4,7 ГБ, поэтому он значительно облегчил создание VBScript для автоматизации процесса.


Я не следую твоей логике. Для создания ISO все эти файлы должны быть прочитаны и записаны в ISO. Затем читается ISO, чтобы извлечь файлы и, наконец, записать их в место назначения. Как это эффективнее, чем читать и писать их один раз?
Джон Гарденерс

любой пример кода в VBSCript, C # или другой язык сценариев?
Kiquenet

@JohnGardeniers Льюис делает ставку на то, что время, необходимое для копирования небольших файлов по сети, намного больше, чем время, необходимое для помещения их в ISO-образ и последующей передачи этого файла. Это действительно зависит от вашей конкретной среды, но, как ни странно, это может быть быстрее, чтобы передать один консолидированный вместо тысяч крошечных файлов.
вс

0

Вы почти наверняка почувствуете лучшую общую производительность для последовательности передачи, если сначала упакуете исходные файлы в один архив (tar или сжатый в zip и т. Д.), Затем перенесете архив по сети, а затем распакуете архив в пункт назначения.

Пожалуйста, не забывайте, что при передаче архива по сети вам будет лучше использовать ftp (или другой файлово-ориентированный протокол передачи), чем простую копию файла SMB.

Используя процесс, подобный описанному выше, я регулярно переносил каталоги приложений объемом около 60 ГБ (с примерно 50 000–75 000 файлов) между несколькими географически разделенными центрами обработки данных (США, Европа, Азия). Разница между передачей одного файла за раз и передачей сжатого архива по FTP в 10-40 раз быстрее.

Rsync также может быть вашим другом (как и во многих других сценариях передачи файлов).

Если вы открыты для коммерческих возможностей, вам может пригодиться решение для двоичной потоковой передачи на основе UDP, которое может передавать биты по нескольким потокам UDP. Взгляните на http://www.filecatalyst.com/


0

Другой вариант - использовать Bittorrent, используя встроенный трекер или DHT. Клиент будет группировать все файлы по блокам (используйте 2MB или больше, если доступно). На приемном конце вы будете получать файлы большими блоками по мере их записи на жесткий диск. Это помогает консолидировать ваши небольшие файлы в куски по 2 МБ, и вы получаете лучшую скорость передачи и

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.