Перемещение большого количества файлов (~ 100 000)

Я работаю с папками, которые содержат много файлов, например, 100 000 или даже 1 000 000 файлов в папке. Когда я пытаюсь переместить содержимое одной папки в другую, мой компьютер всегда зависает. Даже когда процесс кажется завершенным, я не вижу содержимого какой-либо папки, потому что nautilus кажется полностью замороженным, и мне приходится заставлять мой компьютер перезагружаться. Я заметил, что это происходит также, когда я пытаюсь переместить как 10 000 файлов.

Это проблема моего компьютера или это нормально при работе с этими числами?

Есть ли какой-нибудь умный способ выполнить эту передачу файла?

13
задан 9 July 2016 в 04:35

4 ответа

Возможно, рассмотрите использование чистого метода командной строки для передачи файлов очень большого объема, Вы, несомненно, найдете, что процесс существенно быстрее, чем использование gui.

Существует много различных способов выполнить это, но следующее работало быстро, безопасно и эффективно в моей системе:

find . -maxdepth 1 -type f -print0 | xargs -0 mv -t <destination>

Некоторое объяснение этой команды:

  1. Ваш входной каталог является '.' символом, и для этой конкретной команды необходимо быть в том каталоге
  2. Ваш выходной каталог <destination> в моем примере. Очевидно, измените это, чтобы удовлетворить Вашим собственным потребностям и не учесть скобки.
  3. Этот синтаксис допускает имена файлов с пробелами в качестве награды :)

Бесконечные перестановки возможны, но это должно работать хорошо и намного более эффективно, чем gui. Одна перестановка, например: если бы Вы хотели переместить только файлы PDF, то Вы могли бы работать:

find . -iname "*.pdf" -maxdepth 1 -type f -print0 | xargs -0 mv -t <destination>

Использование xargs открывает много возможностей особенно с перемещением такого большого количества файлов. Многие, много возможностей....

Потенциальные проблемы:

Существует по крайней мере 2 потенциальных ловушки для обдумывания благодаря комментаторам ниже для этих мыслей:

  1. Ваш целевой каталог мог быть поврежден, во впоследствии недостижимом месте, введенном с опечаткой и т.д. mv все еще переместит файлы туда! Будьте осторожны здесь...
  2. Если -t опция (--target-directory) отсутствует и папка назначения является на самом деле файлом, Вы переместите один файл и сбой на остальных. mv имеет 2 использования: переименуйте источник месту назначения или источник перемещения к каталогу. Снова будьте осторожны...
19
ответ дан 9 July 2016 в 14:35

У меня был подобный опыт прежде, это нормально при контакте с большим количеством файлов. У меня было большое количество таблиц данных PDF (электронные части).

инструменты GUI проверяют приблизительно на детали файла & метаданные (Значок/Миниатюра, Размер...), это будет грандиозное предприятие в таком случае. Даже в Представление в виде значков и без миниатюр, они заморозятся, поскольку большинство из них не разработано для такого крайнего случая. Инструмент GUI пытается загрузить значки презентации для всех файлов/папок в каталоге, даже те объекты не видимы пользователю в текущей экранной части. Сортировка является также частью проблемы и никакого способа избежать его.

  • я заканчиваю тем, что разделил файлы файлов на отдельных папках на основе вида/модели менее затем 10000 каждый. Можете быть Вы, может использовать дату (как большинство людей делает с фотографиями/сканированиями), или первая буква (буквы) (как в хранилище пакетов Ubuntu )
  • , легче использовать инструменты CLI вместо этого, поскольку они показывают только, что Вы запросили. Можно использовать locate для быстрого поиска в земельном участке find.
  • Для операции пересылки, используйте mv в терминале (инструменты GUI являются медленными, потому что они пытаются обновить представление периодически).

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

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

  • , Создают единственный пакет или немного пакетов, как zip с нет/низко сжатием. При копировании его это быстрее, так позволит , DMA делает свое задание.
4
ответ дан 9 July 2016 в 14:35

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

mc commander 2-pane view

Это - находящийся в ncurses визуальный файловый менеджер - у Вас есть представление с двумя областями о Ваших файлах и доступном меню. Применение мыши возможно, даже по ssh. Можно просмотреть около фс, осмотреть файлы со средством просмотра файла, фильтром согласно критериям на лету и иметь копию или операции пересылки, сделанные на командной строке.

Это - клон DOS-программы командующий Norton , который был популярен в середине восьмидесятых. Это работает хорошо каждый раз, когда GUI начинает становиться ненадежным для меня и идеала для Вашей цели.

3
ответ дан 9 July 2016 в 14:35

Я встретился с несколько подобными проблемами - я тестировал свою установку RAID и при выполнении огромных передач (например, 100,000 + файлы и 1-2 ТБ данных сразу), кажется, что передачи запускаются довольно быстрый - позволяет, говорят, что ~200MB/sec, затем быстро замедлитесь к разумному плато ~90-120MB/sec (возможно после потребления некоторого устройства хранения данных кэша флэш-памяти на дисках). Затем после 20-30min, операция постепенно начинает спадать до намного более низкого плато ~30-40MB/sec, хуже при контакте с маленькими файлами - взятие операции 4-5 часов ближе к 15 часам.

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

то, Что работало лучше всего на меня, должно было использовать полуночного командующего, и каждый раз, когда копирование стало медленным, я приостановлю операцию, пока свет жесткого диска не гас после того, как любые незаконченные операции спугнули - обычно приблизительно одна минута - затем непауза MC снова, и это будет отстреливаться до достойного темпа для другого 20-30min. Довольно раздражающий все же.

0
ответ дан 9 July 2016 в 14:35
  • 1
    Да эти работы. Но есть ли больше способы сделать это. – user5499810 27 August 2017 в 00:54

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

Похожие вопросы: