Переместите / скопируйте миллионы изображений с Macos на внешний диск на сервер Ubuntu - PullRequest
0 голосов
/ 20 мая 2019

Я создал набор данных из миллионов (> 15М, пока) изображений для проекта машинного обучения, занимающий более 500 ГБ памяти.Я создал их на своем Macbook Pro, но хочу как-то перенести их на наш DGX1 (кластер GPU).Я подумал, что будет быстрее скопировать на быстрый внешний SSD (2x nvme в raid0), а затем подключить этот диск непосредственно к локальному терминалу и скопировать его на сетевой диск.Я больше не уверен в этом, поскольку уже более 24 часов я работаю с внешним накопителем.

Сначала я попытался использовать графический интерфейс Finder (плохая идея!).Для меньшего набора данных (2M изображений) я использовал 7zip для создания нескольких архивов.Сейчас я использую терминал в MacOS для копирования файлов с помощью cp.

Я попробовал "cp / path / to / dataset / path / to / external-ssd"

Определенно, Finder был не лучшим подходом, так как на этапе "подготовки" к копированию он длился вечно.

Использование 7zip для архивирования набора данных увеличило скорость передачи «файла», но для извлечения файлов потребовалось более 4 дней (!), А для набора данных - на порядок меньше.

Использование командной строки cp, началось быстро, но, похоже, замедлилось.Монитор активности говорит, что я получаю 6-8 тыс. Операций ввода-вывода на диск.Прошло 24 часа, и это не совсем наполовину сделано.

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 20 мая 2019

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

Основные преимущества (выдержка из man-страницы):

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

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

Что касается использования команд и синтаксиса, то для локальных передач почти то же самое, что cp:

rsync -az /path/to/dataset /path/to/external-ssd

...