9

Мне нужно скопировать некоторые данные, которые включают 900 000 крошечных файлов общим объемом около 30 гигабайт на компьютер с Windows. Однако его необходимо скопировать и настроить менее чем за полтора часа, а копирование с жесткого диска USB может занять более 5 часов, в основном из-за огромного количества файлов. Есть ли лучший / более быстрый способ справиться с этим, например, выполнить какое-то блочное копирование? Спасибо

8 ответов8

8

Если жесткий диск можно извлечь из интерфейса USB и подключить к SATA/ATA, я бы установил его на конечном компьютере. Как вы заметили, скорость передачи будет намного выше. Для копирования, если вы работаете в Windows, я бы сделал простую ROBOCOPY. Это примерно так быстро, как вы можете надеяться, хотя есть и другие альтернативы.

ROBOCOPY /E /B /MT 'source' 'destination'

Я бы постарался не сжимать все эти файлы, хотя есть большая вероятность, что время сжатия и перемещения превысит простое перемещение файлов.

* Добавлена опция /MT для robocopy. Это может значительно ускорить передачу, когда вы находитесь в многопоточной среде.

6

Вы можете попробовать сделать снимок всей папки / диска

В системах Linux вы можете использовать dd чтобы получить сырую копию файловой системы и скопировать ее как один большой файл.

Чтобы извлечь образ в Windows, вам может понадобиться установить Cygwin или программу, способную обрабатывать образы dd .

6

С большим количеством файлов лучше всего создать архив tar, чтобы у вас было меньше файлов для работы. Если вы используете внешний жесткий диск USB 2.0, вы должны использовать USB 3.0, eSATA или использовать быструю локальную сеть.

Какая у вас исходная ОС? Если обе ваши операционные системы были Linux, вы могли бы передать файлы через tar, gzip и ssh на целевой компьютер. Вы можете установить cygwin на Windows, чтобы получить этот тип функциональности и для Windows.

Обновить:
В посте « Использование Tar и SSH для улучшения скоростей SCP » описаны команды, необходимые для отправки содержимого tar через ssh.

3

Установите диск с исходными файлами на компьютер, который вы настраиваете, и перенесите диск на диск. Забудь про USB. Даже передача по проводам (объединение компьютеров в сеть) будет быстрее, чем через USB (при условии, что USB 2.0 и 1 Гбит / с NIC). Если это повторяющееся событие, обратите внимание на репликацию.

3

Используйте rsync с опцией z .

-z,         --compress              compress file data during the transfer
            --compress-level=NUM    explicitly set compression level
            --skip-compress=LIST    skip compressing files with suffix in LIST

Это увеличит скорость передачи по сети. Так что, скорее всего, не полезно в вашем случае.

После некоторого прочтения я понял, что нам не следует использовать флаг '-z' при копировании данных с одного локального жесткого диска на другой, это увеличивает накладные расходы. Спасибо за комментарий от @FakeName.

1

Вы быстро приближаетесь к ограничениям вашего жесткого диска. На самом деле, с текущими стандартными накопителями невозможно измерить время передачи с помощью операции копирования для каждого файла.

Предполагая, что для каждого файла требуется 1 HD, время поиска и поиска составляет 7 мс (что немного идеализировано, реально для каждого файла потребуется два поиска, если только растровое изображение тома не кэшируется в ОЗУ), в лучшем случае вы будете управлять ~ 142 файлами в секунду (\$\frac {1000} {7} = 142,8 ...\$).

Со спецификациями OP (30 ГБ, 900 000 файлов) это ~ 33 КБ на файл (\$\frac {30 000 000k} {900 000} = ~ 33,3 ...\$. 33 КБ * 142 = 4,68 МБ / с.

Минимальное время передачи 30 ГБ при скорости 5 Мбит / с составляет ~ 1 час 40 минут (\$ \frac {30,000} {5} = = 6000 \$ секунд. \$ \Frac {6,000} {60} = 100 \$ минут или 1:40 часов)

Следовательно, невозможно достичь скорости лучше, чем ~ 5 МБ / с, то есть с идеальным диском (и с меньшим количеством операций поиска. Это для одного поиска на файл. Реально было бы два). Вы полностью ограничены производительностью диска.


Единственный способ улучшить производительность - это последовательно копировать всю файловую систему и раздел. dd может сделать это на Linux.

Что ты пытаешься сделать?

0

Попробуйте 7zip архивировать файлы только в один файл. Если возможно, используйте WLAN с подключением adhoc к ноутбуку.

0

Что касается ответа @arcyqwery, вы можете сжать его и одновременно превратить в один большой файл. Это немного ускорит процесс.

Может также стоить использовать такую программу, как TeraCopy, так как она обычно быстрее, чем производительность копирования окон по умолчанию. Вы должны проверить с подобными обстоятельствами в вашем случае, чтобы проверить, хотя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .