Я получаю доступ к общей папке на другом компьютере с помощью проводника Windows. Я обнаружил, что перемещение большого файла из этой папки в подпапку занимает очень много времени. Действительно ли файл копируется в новое место, а затем удаляется из старого? Или есть еще одна причина, по которой это занимает так много времени?
Примечание. Та же операция с локальной папкой занимает доли секунды, поскольку новая копия файла вообще не создается. Изменяются только записи каталога.
Перемещение файлов на удаленном общем ресурсе точно так же, как и на локальном: Explorer просто дает серверу команду переместить файлы / папки в новое место назначения. Это также можно рассматривать как переименование полного пути. Нет необходимости копировать файлы в локальную систему и обратно.
Одна из основных причин любого замедления - это что-то в вашей локальной системе, удерживающее файл открытым: сканеры вирусов, расширения оболочки (например, утилиты сжатия, проверяющие файлы .exe на наличие заглушек SFX, создание миниатюр изображений / фильмов, получение информации о названии / авторе из документов Word , сканирование музыки / фильмов на наличие тегов и т. д.) и т. д. Теперь Explorer должен дождаться, пока все закроют свои открытые дескрипторы файла, прежде чем он сможет завершить файловую операцию, а поскольку многие из упомянутых мной вещей включают случайный ввод-вывод небольших блоков, задержка SMB превращается в гораздо большую проблему, чем она есть на локальных дисках. Еще хуже, если вы делаете это через беспроводное соединение.
В качестве примера того, насколько быстро это может быть, попробуйте выполнить перемещение из командной строки, не открывая проводник в исходной папке. Операция будет очень быстрой.
Когда вы используете общий ресурс CIFS, перемещение файла внутри общего ресурса должно действовать аналогично локальному случаю, за исключением того, что здесь задействовано что-то вроде DFS, когда файл фактически должен быть скопирован на сервер из одного места в другое.
DFS означает, что вы видите одно дерево каталогов, которое может состоять из общих ресурсов на совершенно разных серверах. Нечто подобное будет в случае, если разные диски монтируются в общее дерево на сервере Samba, и вы перемещаете файл из одной точки монтирования в другую.
В большинстве случаев - да, сначала он копируется по сети, а затем удаляется из источника, когда копирование завершается успешно. Вы можете проверить это действие, прервав «перемещение», которое обычно приводит к тому, что источник остается неповрежденным и является неполной копией цели.
Возможно, я излишне осторожен, но я бы никогда не советовал перемещать файлы по сети. Вместо этого я копирую и вставляю, проверяю, что размеры точно совпадают, а затем возвращаюсь и удаляю их. Я просто не верю, что ОС будет за ней достаточно хорошо (независимо от ОС).