Назад | Перейти на главную страницу

Как скопировать огромные (миллионы) деревья каталогов в Windows?

У меня есть раздел NTFS, в котором есть папка, содержащая более 5 миллионов каталогов. Каждый каталог содержит дополнительные каталоги, а затем файлы.

Я перехожу на SSD, и мне нужно скопировать все эти данные на новый диск, но у меня возникают проблемы.

Такие каталоги приводят к сбою проводника Windows, поэтому я даже не пробовал.

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

Как копировать каталоги такого размера?

Как уже говорилось в некоторых других ответах, я никогда не видел, чтобы RoboCopy терпел неудачу таким образом - AFAIK, он не выполняет никакой индексации заранее, он просто начинается с первого каталога и продолжает работу.

У вас установлена ​​последняя версия RoboCopy? Есть несколько старых копий, относящихся к старым временам NT, которые могут иметь проблемы с большими копиями.

FWIW, вот заголовок версии из моей установки для сравнения:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP010
-------------------------------------------------------------------------------

Я никогда не видел, чтобы robocopy терпел неудачу таким образом, но если он не работает из-за размера / предварительной индексации, то почему бы не написать свой собственный скрипт для копирования? Я бы написал эту вещь на PERL и просто делал копию для каждого файла и рекурсивно просматривал его. Вы можете добавить чеки, чтобы увидеть, существует ли уже файл с такой же меткой времени и т. Д.

Вы также можете проверить RichCopy который является многопоточным.

Не уверен, что еще есть в вашем разделе, но вы можете использовать Live CD с Linux (например, GPartEd) и просто скопировать весь раздел сразу на новый диск. В качестве бонуса, если вы хотите изменить размер раздела при этом, GPartEd сделает это за вас. Затем удалите все, что вы не хотели копировать. :)

Возможно, вы столкнулись с проблемами длины пути в структуре каталогов. NTFS допускает более длинные пути, чем могут получить доступ Explorer или CMD. Для этого требуется немного творческого подхода. Обычно это вызвано записью файлов, которые не используют ни один из методов, или общий ресурс - это каталог или три ниже, что позволяет ему работать.

for /D %%D in (*.*) do call copydir.cmd %%D

[CopyDir.CMD]
subst m: %1
m:
xcopy *.* F:\newlocation\ /s/e/h/q/y
subst m: /del

Запустите это в верхней части структуры каталогов, чтобы отрезать верхнюю часть указанной структуры каталогов и, надеюсь, сделать ваши пути достаточно маленькими, чтобы их могли видеть все. Используйте любой инструмент копирования, который вам нужен, вместо xcopy.

Вероятно, вам нужно использовать что-то многопоточное, например Richcopy он позволяет вам указать, сколько потоков и насколько глубоко копать для каждого потока. Я не пробовал его на 5 миллионах директорий, но я использовал его на тысячах, и он работал намного лучше, чем robocopy. Еще одна утилита копирования в моей сумке трюков: XX копия. Это не так быстро, но имеет несколько довольно интересных опций клонирования каталогов. Поскольку это командная строка, я не думаю, что она даже попытается перечислить структуру, просто прокачайте ее.

Можете ли вы сделать резервную копию с помощью Windows NTbackup или аналогичная утилита? Обычно, когда я перемещаю большие объемы данных, я делаю резервную копию с одного устройства, а затем восстанавливаю на другое.

Может попробовать старый добрый xcopy

Никогда не пользовался и не ручаюсь за это, но люди отзываются о TeraCopy.

Это не настоящий ответ, скорее предлагаемая линия атаки: способ * nix сделать это будет использовать tar cf - | tar xvf -, по сути, прося tar создать архив и напрямую передать его в tar для его извлечения (в другом месте). Возможно, это можно сделать и с окнами аналогичным образом.

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

Я знаю, что это не самое изящное решение, но в крайнем случае оно сработало.

В наши дни я бы, наверное, попробовал использовать rsync или tar из утилит cygwin.

Я использую FastCopy ( http://www.ipmsg.org/tools/fastcopy.html.en). Это копировальный аппарат с открытым исходным кодом, являющийся отраслевым стандартом уже более 10 лет. Я бы больше ничего не использовал.

Первым делом я попробую RichCopy:

http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx?pr=blog

Следующее, что я попробую, - это загрузиться с Ubuntu Live CD или Knoppix CD и выполнить RSYNC.

Здесь важно помнить, что вы не только хотите скопировать файлы ... вы хотите убедиться, что они скопированы поверх INTACT и нет повреждений.

Я скопировал более миллионов файлов (более 4 миллионов и их количество) с помощью rsync, и он оказался чрезвычайно надежным.

Если вас не заботит сохранение ACL безопасности, вы можете использовать rsync через cygwin. В противном случае, вероятно, лучше найти способ разбить копию с помощью одной из других упомянутых утилит (robocopy, richcopy, xcopy).

Я был впечатлен Вне всякого сравнения для этих типов файловых операций. У него есть бонус в том, что если копия не удалась или вам придется продолжить ее позже, он точно знает, с чего начать, потому что он поддерживает различия только для копирования.