Почему перемещение больших папок занимает много времени?


10

У меня есть большая папка с> 100k файлами. Я переместил его в свою архивную папку, и он занял целую вечность Это почему? Я знаю, что на XP это занимает менее одной секунды, но не на Windows 7. Я уверен, что это вещь разрешения, есть ли способ, как отключить его и сделать его быстрее?

Я перемещаю папку в другую на том же диске / разделе. В XP. Насколько я знаю, он просто перемещает файл папки из одного места в другое. В Windows 7 кажется, что это касается чего-то в каждом файле, когда я его перемещаю.

Что я могу сделать, чтобы это исправить? Отбросить права доступа?


3
Я не знаю, почему вы так уверены, что это разрешительная вещь. Посмотрите еще раз на другие переменные, которые могли измениться (задержка в сети, копирование на USB-накопитель и т. Д.). Какую другую информацию мы должны знать о том, что вы перемещаете, откуда вы перемещаете файлы и куда вы перемещаете файлы?
Крис Дуайер

Ждать SP1 ???
Лоуренс Дол

Мне тоже интересно, некоторые вещи, которые я собирался попробовать, но еще не успел: это специфично для файловой системы; т.е. имеет ли значение его FAT32 или NTFS? Отключите индексирование для файловой системы (если время уходит на обновление поисковых индексов).
user12889

@ user12889: Я не уверен, что я сделал, но банкомат на моих дисках NTFS перемещается мгновенно. Я не знаю, если это потому, что я отключил «Удаленное дифференциальное сжатие» ( maximumpcguides.com/windows-vista/… ) или это было исправлено в одном из обновлений Windows.

Ответы:


5

Это происходит, когда я использую Windows Explorer для перемещения (или для вырезания и вставки).

Единственный способ обойти это, что я знаю, это использовать что-то кроме Explorer, чтобы переместить каталог. Например, из Windows cmd.exe, использование move a bмгновенно перемещает даже большие каталоги. То же самое касается команды Cygwin mv.


1
Как это отвечает на вопрос в заголовке?
soandos

1
Ответ, подразумеваемый в моем посте: «Потому что был использован Explorer». Оригинальный вопрос "Почему перемещение больших папок занимает много времени?" не хватает информации о том, как это было сделано. Из-за этого, если я ответил "это происходит, когда вы используете Explorer". Я могу быть не в порядке. Я знаю, что причина в моей системе - Explorer, и я делюсь этим с вами. Как ни удивительно, до того, как я отправил сообщение, никто явно не назвал исследователя виновником. Да, я хотел бы знать, почему Explorer работает так медленно. Пока нет известных исправлений, я даю обходной путь, используя встроенные средства, отвечая «Что я могу сделать, чтобы это исправить?».
Райнер Блум

3

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

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

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

(* Думайте о данных файла как о книгах в библиотеке, а о таблице размещения файлов как о наборе учетных карточек, показывающих, в каком разделе находятся книги)


Я посмотрел на формат FAT32 раньше. Я думаю, вместо того, чтобы перемещать folderid, его разрешения на обновление для каждого файла, потому что новая родительская папка может иметь новые разрешения. Мне не нужны какие-либо разрешения здесь и так, если бы я мог выключить его и быстро двигаться, я бы сделал это.

1

Похоже, что всякий раз, когда проводник Windows пытается переместить (или скопировать) папку, он выполняет дополнительный шаг проверки. Если это займет более пары секунд, вы увидите сообщение о состоянии «Обнаружение предметов». Похоже, что это инвентаризация всех файлов в папке; точно так же, как это происходит при открытии этой папки в Проводнике.

Этот шаг может быть необходим в некоторых случаях, но он не нужен для большинства операций «переместить эту папку отсюда туда». Для дальнейшего предположения - кажется правдоподобным, что в некоторых случаях выполнение этой проверки решало некоторые ошибки лучше, и Microsoft никогда не считала важным повысить производительность в нечетных случаях, когда в папке было «более сотни» файлов. Такие проблемы могут включать: при объединении папок; если папка назначения находится на другом носителе / ​​разделе; возможно, чтобы проверить, будут ли новые пути к файлам слишком длинными для NTFS. IMO, любой / все из них можно было бы проверить заранее, чтобы избежать выполнения этой дополнительной операции индексации, но я знаю, что производительность в крайнем случае часто игнорируется.


0

Я давно не пользовался XP, но просто имейте в виду, что перемещение большого количества маленьких файлов намного медленнее, чем перемещение небольших количеств больших файлов, по крайней мере, в Windows 7.

Кроме того, перемещение файлов между одним и тем же диском происходит намного быстрее, чем перемещение файлов между различными дисками, иногда мгновенно.


я редактирую вопрос

0

Это не обязательно отвечает, ПОЧЕМУ это происходит ..

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

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


немного быстрее или движется мгновенно, как в XP?

Немного быстрее (если вообще). Это все еще не делает это нигде рядом мгновенно.
user12889

0

Прямо сейчас папки перемещаются в одно мгновение. Я помню, как в прошлом отключал «Дистанционное дифференциальное сжатие» http://maximumpcguides.com/windows-vista/disable-remote-differential-compression/, но ATM отключен, поэтому я считаю, что это было исправлено в одном из обновлений Windows ,


0

Попробуйте использовать команду командной строки

copy source destination.

Я использовал это и 20k файлов скопировал сразу.


Просто FYI - SuperUser для ответов и ничего больше. Я отредактировал ваш ответ, чтобы отразить это. Хороший ответ, хотя!
Джон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.