У меня есть около 3 миллионов файлов, которые мне нужно скопировать из одной папки в другую по SAN моей компании. Как мне лучше всего это сделать?
Нет, ты прав. Думаю, это не так. Стоит ли его удалить?
Нет, оставь это. Нюансы, позволяющие сделать это быстро, зависят от компьютерной грамотности, поэтому проблему можно с полным основанием считать относящейся к программированию.
Вы говорите о синхронизации двух больших коллекций документов (в этом случае взгляните на обсуждение rsync ниже) или о выполнении разовой операции?
на самом деле оба - это была очень ценная информация для меня
У меня было искушение закрыть это как вопрос, не связанный с программированием, но я полагаю, что он может быть решен с помощью программы, поэтому я считаю, что это предел. Вам следует обновить свой вопрос, указав систему (ы) и необходимость синхронизации.





Вы рассматривали возможность использования rsync? Это инструмент, который использует алгоритм, который включает в себя вычисление хэшей для кусков файлов для сравнения двух сайтов и отправки дельт между сайтами.
rsync принесет вам пользу только в том случае, если некоторые файлы уже существуют в месте назначения, а местом назначения является другой компьютер. Было бы неплохо, если бы вам приходилось периодически обновляться с одной машины на другую, но это не поможет для первоначальной копии.
Это также не очень поможет вам при копировании файлов из одного места файловой системы на одном компьютере в другое.
@NXC: rsync копирует между двумя папками независимо от того, находятся они на одном компьютере или нет. Это не волнует.
Это не принесет вам никаких преимуществ на одной машине (или где-либо еще), если вы не синхронизируете две коллекции. Дорогостоящая часть этой операции - запись на диск.
Да, но это легко, и OP не сказал, нужно ли копировать его более одного раза.
rsync работает медленнее, чем прямая копия, если сеть быстрее 100 МБ. rsync со сжатием работает быстрее, чем прямая копия со сжатием или обычная копия на более низких скоростях. zib.de/schuett/nsync
Если прямая копия слишком медленная (хотя SAN с кэшированием с обратной записью будет примерно такой же быстрой для этого типа операций), вы можете поместить файлы в один или несколько архивов, а затем развернуть архивы в месте назначения. Это немного уменьшит забивание диска.
На более умном уровне вы можете проделать трюк с tar или cpio, где вы архивируете файлы и записываете их в stdout, который вы передаете другому процессу tar / cpio, чтобы распутать их в месте назначения.
Пример команды для этого с tar выглядит так:
tar cf - * | (cd [destination dir] ; tar xf - )
Некоторые сети SAN также могут напрямую клонировать дисковый том.
+1 к "ТАР это вверх". Особенно, если вы работаете с большим количеством крошечных файлов, которые вам очень помогут.
Эту команду tar можно переписать как: tar -C <source-dir> cf -. | tar -C <каталог-каталога> xf -
Думаю, Teracopy сделает это.
http://www.codesector.com/teracopy.php
Или, если на * nix, попробуйте cuteftp.
Если вы спросите меня, это лучший способ копирования с помощью новейшего системного программного обеспечения.
Просто что-то вроде:
cp -pvr /pathtoolddir /pathtonewdir
на Linux-боксе подойдет и отлично работает. Любое промежуточное сжатие просто замедлит процесс.
Если вы работаете в Windows, используйте robocopy. Он очень надежен и подходит для подобных ситуаций. Он поддерживает обнаружение мертвых ссылок и может получить команду повторить попытку копирования, если одна из них будет прервана.
По моему опыту, Microsoft SyncToy очень хорошо справляется с невероятным количеством файлов. И им очень легко пользоваться.
Это действительно вопрос программирования?