Копирование миллионов файлов

У меня есть около 3 миллионов файлов, которые мне нужно скопировать из одной папки в другую по SAN моей компании. Как мне лучше всего это сделать?

Это действительно вопрос программирования?

Daniel Earwicker 23.12.2008 17:38

Нет, ты прав. Думаю, это не так. Стоит ли его удалить?

Jeb 23.12.2008 17:42

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

ConcernedOfTunbridgeWells 23.12.2008 17:49

Вы говорите о синхронизации двух больших коллекций документов (в этом случае взгляните на обсуждение rsync ниже) или о выполнении разовой операции?

ConcernedOfTunbridgeWells 23.12.2008 18:03

на самом деле оба - это была очень ценная информация для меня

Jeb 23.12.2008 19:29

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

PhiLho 23.12.2008 23:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
6
2 505
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Вы рассматривали возможность использования rsync? Это инструмент, который использует алгоритм, который включает в себя вычисление хэшей для кусков файлов для сравнения двух сайтов и отправки дельт между сайтами.

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

ConcernedOfTunbridgeWells 23.12.2008 17:38

Это также не очень поможет вам при копировании файлов из одного места файловой системы на одном компьютере в другое.

ConcernedOfTunbridgeWells 23.12.2008 17:40

@NXC: rsync копирует между двумя папками независимо от того, находятся они на одном компьютере или нет. Это не волнует.

Stewart Johnson 23.12.2008 17:46

Это не принесет вам никаких преимуществ на одной машине (или где-либо еще), если вы не синхронизируете две коллекции. Дорогостоящая часть этой операции - запись на диск.

ConcernedOfTunbridgeWells 23.12.2008 17:51

Да, но это легко, и OP не сказал, нужно ли копировать его более одного раза.

John Sonmez 23.12.2008 18:01

rsync работает медленнее, чем прямая копия, если сеть быстрее 100 МБ. rsync со сжатием работает быстрее, чем прямая копия со сжатием или обычная копия на более низких скоростях. zib.de/schuett/nsync

jwilkins 25.03.2013 03:39

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

На более умном уровне вы можете проделать трюк с tar или cpio, где вы архивируете файлы и записываете их в stdout, который вы передаете другому процессу tar / cpio, чтобы распутать их в месте назначения.

Пример команды для этого с tar выглядит так:

tar cf - * | (cd [destination dir] ; tar xf - )

Некоторые сети SAN также могут напрямую клонировать дисковый том.

+1 к "ТАР это вверх". Особенно, если вы работаете с большим количеством крошечных файлов, которые вам очень помогут.

BlaM 23.12.2008 17:45

Эту команду tar можно переписать как: tar -C <source-dir> cf -. | tar -C <каталог-каталога> xf -

Bombe 23.12.2008 18:01

Думаю, Teracopy сделает это.

http://www.codesector.com/teracopy.php

Или, если на * nix, попробуйте cuteftp.

Если вы спросите меня, это лучший способ копирования с помощью новейшего системного программного обеспечения.

Просто что-то вроде:

cp -pvr /pathtoolddir /pathtonewdir

на Linux-боксе подойдет и отлично работает. Любое промежуточное сжатие просто замедлит процесс.

Ответ принят как подходящий

Если вы работаете в Windows, используйте robocopy. Он очень надежен и подходит для подобных ситуаций. Он поддерживает обнаружение мертвых ссылок и может получить команду повторить попытку копирования, если одна из них будет прервана.

По моему опыту, Microsoft SyncToy очень хорошо справляется с невероятным количеством файлов. И им очень легко пользоваться.

Другие вопросы по теме