Быстрое перемещение миллиона файлов из несольких папок в одну

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
brainiac
рядовой
Сообщения: 38
Зарегистрирован: 2011-05-10 14:59:08

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение brainiac » 2019-11-18 13:10:03

Всем привет!
Парни нужна помощь.
Надо из нескольих тысяч директорий слить порядка миллиона файлов в одну.
Сейчас это работает очень долго (скоро будет 12 часов как) таким скриптом:

Код: Выделить всё

#!/bin/sh
for file in `find ./pages-1574024491/FIL_PAGE_INDEX/ -type f -name "*.page"`; do mv "$file" ./pages-1574024491/end/; done
Есть варианты ускорить/оптимизировать процесс?

п.с.
файло находится на одном большом твердотельнике, но тем не менее долго все это...
объём примерно 25гигов

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение skeletor » 2019-11-19 12:59:20

Если упора в диски нет, тогда использовать xargs.

brainiac
рядовой
Сообщения: 38
Зарегистрирован: 2011-05-10 14:59:08

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение brainiac » 2019-11-19 14:38:03

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

Кстати вот такая конструкция тоже работает:

Код: Выделить всё

find . -type f -exec mv "{}" ../end \;
Кстати, с xargs, почему-то ошибки вываливались, видать не до конца разобрался.

lazhu
сержант
Сообщения: 254
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение lazhu » 2019-11-25 11:50:50

Переместили? Сколько времени заняло? Оптимизация тут может быть только одна - вызвать команду mv один раз вместо миллиона.

Код: Выделить всё

find ./pages-1574024491/FIL_PAGE_INDEX/ -type f -name "*.page" > dump
tr '\n' ' ' < dump > move.sh
chmod 755 move.sh
Добавьте 'mv ' в начало строки, путь назначения в конец и запустите скрипт.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение skeletor » 2019-11-25 11:59:31

lazhu, То, что вы сделали строку длинной в 100500 файлов может не сработать, ибо в mv/cp/... есть общее ограничение на количество параметров, поэтому может не сработать при слишком большом количестве.

lazhu
сержант
Сообщения: 254
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение lazhu » 2019-11-25 12:09:11

skeletor, да, вполне возможно. С тысячью работает без проблем. Ну, разбить на модули можно, будет все равно быстрее в 2^n раз

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение skeletor » 2019-11-25 12:12:49

Тут вариантов 2: либо разобраться с xargs и запустить и не парится, либо разбивать на модули, писать циклы для обработки модулей и т.д. ))

brainiac
рядовой
Сообщения: 38
Зарегистрирован: 2011-05-10 14:59:08

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение brainiac » 2019-11-25 12:34:00

lazhu писал(а):
2019-11-25 11:50:50
Переместили? Сколько времени заняло? Оптимизация тут может быть только одна - вызвать команду mv один раз вместо миллиона.
Да переместил, способами которые указал сверху, у меня заняло около 17 часов :\

brainiac
рядовой
Сообщения: 38
Зарегистрирован: 2011-05-10 14:59:08

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение brainiac » 2019-11-25 12:38:19

skeletor писал(а):
2019-11-25 11:59:31
есть общее ограничение на количество параметров, поэтому может не сработать при слишком большом количестве.
Да, если втупую врубить mv то сваливается с ошибкой типа 'Argument list too long'

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Быстрое перемещение миллиона файлов из несольких папок в одну

Непрочитанное сообщение Alex Keda » 2019-12-03 8:14:42

я на php скрипт писал
180k файлов - за 10 минут.
при этом оно ещё проверяло что файл есть, и обновляло таблицу в БД...

но - там было известно местоположение файлов.

не, не так. там местопололожение высчитывалось по его имени, причём в обоих случаяз - и откуда и куда.
т.е. искать все не надо было, чисто перекладка
Убей их всех! Бог потом рассортирует...