Копирование мелких файлов по сети
Я заметил, что если я передаю несколько больших файлов между двумя жесткими дисками, это довольно быстро, со скоростью не менее 30 МБ в секунду, но если я передаю тысячи файлов менее 5 КБ, это чертовски медленно . около 1 до 2 МБ в секунду.
Есть ли способ ускорить процесс копирования / вставки с тысячами маленьких файлов в Windows 7?
Возможно, вы захотите взглянуть на TeraCopy - программу, предназначенную для копирования и перемещения файлов с максимально возможной скоростью путем динамической настройки буферов для сокращения времени поиска. TeraCopy также может выполнять асинхронное копирование, что ускоряет передачу файлов между двумя физическими жесткими дисками.
Я лично использовал это приложение и обнаружил, что оно ускоряет передачу файлов, что обычно занимает некоторое время.
Надеюсь, это поможет некоторым.
TeraCopy потерпел крах для меня, поэтому я бы не рекомендовал его, так как существует вероятность потери данных. У меня была противоположная проблема - копирование 1м крошечных файлов приводило к сбою проводника, но TeraCopy работал хорошо!ZIP файлы, а затем передать больший файл ZIP? Я не знаю, сколько времени это займет, чтобы ZIP, хотя (и если общее время быстрее).
Вы все еще должны прочитать все файлы на стороне источника и записать их все на стороне назначения. Это не будет быстрее. Вы просто потеряете время, чтобы сжать их. На самом деле, это работает для меня в моей ситуации, так как я действительно хотел сделать резервную копию файлов . Меня не волнует разархивирование. Сжатие тысяч файлов наверняка сработало . заархивированный файл был намного быстрее обычного копирования. Но да, я попытался расстегнуть молнию, и это заняло некоторое время. Спасибо за предложение. Это работает очень хорошо. Мне удалось получить время передачи 200 МБ файлов с 30 секунд, используя обычную копию, до 2 секунд (без сжатия, другой диск). Причина, по которой это работает, заключается в том, что существует много накладных расходов, связанных с созданием и закрытием нового файла. В архиве он имеет один дескриптор файла (архив), к которому вы добавляете данные. Если вы переходите на другой жесткий диск, создайте архив в месте назначения, не создавайте его, а затем перемещайте. Другой случай использования, где это может помочь значительно ускорить процесс, - при переносе на / с портативных флэш-накопителей или других медленных носителей и интерфейсов. Архивирование / разархивирование тысяч маленьких файлов на SSD с подключением SATA III намного быстрее, чем передача тысяч файлов на / с портативной флешки по USB. Очистка также значительно упрощена, поскольку удаление одного zip-файла на USB-накопителе занимает менее секунды, а не несколько минут, чтобы удалить папку с тысячами мелких файлов.Решение состоит в том, чтобы архивировать с WinRAR, но, когда его спросят, как архивировать, выберите store . Это означает, что сжатия не будет. Таким образом, примерно за одну минуту вы получите один большой файл для копирования, который будет копироваться очень быстро.
Я попытался скопировать 19890 маленьких файлов (по 5Кб каждый), и Windows сказала мне, что это займет 3 часа, TeraCopy сказал 3,2 часа, но по моему методу это заняло всего 1,5 минуты.
Возможно, что часть того, что замедляет работу многих маленьких файлов, заключается в том, что они не находятся в одной и той же физической области диска. На диске, который не очень фрагментирован, один большой файл в основном будет читаться из одного места, но если вам нужно прочитать несколько отдельных файлов, они могут быть разбросаны по всему диску.
ZIP-архив был первой идеей, которая пришла мне в голову, но, как указывалось выше, вы все равно потеряете время на этот процесс. Я заметил, что в целом копирование с помощью RoboCopy.exe происходит быстрее, чем через GUI. Возможно, вы захотите поиграть с этим и посмотреть, как это работает для вас.
Вы потеряете большую часть времени из-за частого переключения между содержимым файла и записями MFT. Где отдельные файлы находятся на диске, здесь почти не имеет значения.Возможно, стоит попробовать выполнить быструю дефрагментацию перед тем, как что-либо архивировать, но это действительно так, если вы будете часто перемещать множество небольших файлов. Если нет, то я предлагаю просто сжать его (с 7zip или чем-то - что часто сжимает лучше, чем просто стандартное сжатие Windows), а затем скопировать.
И это также зависит от жестких дисков. Это внешний жесткий диск USB или 2, которые находятся в той же системе? Если это старый внешний жесткий диск, возможно, он использует USB1.0 или вам лучше иметь один с источником питания.
У ZIP есть ограничение на размер файла 4 ГБ (или что-то в этом роде) - я обычно использую архиватор RAR (у него нет ограничения на размер файла) и указываю, что сжатие вообще не требуется - таким образом архивирование в один файл происходит очень быстро, и тогда я просто копирую этот большой файл.
Если это система на основе Unix, вы можете использовать tar поверх ssh.
Следующая команда сжимает все файлы и папки.
tar -cf - / home | ssh [email protected] tar -xvf - -C /
-Передача и распаковка на втором компьютере.
Это намного быстрее, чем копирование только на одну SCP
Стоит убунту на виртуалке, на ней самба. Сеть с виндой установлена. Когда копируешь один файл большого размера через сеть с винды на убунту, то он копирует со скоростью 15 метров в сек., а когда заливаешь какой-то сайт с мелкими файликами, картинки, скрипты итд. то заливает со скоростью 20-30 кб/сек. Ну уж слишком мне это не нравится, что сделать можно что бы мелкие заливались ну хотя бы со скоростью пару метров в секунду?
Думаю если фтп поднять то будет намного быстрее заливать, но мне нужен именно сетевой диск что бы быстро работал.
Dim0n
С убунту на винду тот же сайтик пошел на скорости от 0.5 до 1.5 мб/сек.
TPYCbl
Семейные
На работе через свитч соединено 5 компов. На 1 убунту, с самбой. Только что погонял - мелкие файлы копирует достаточно быстро (1.5-2 МБ/сек) в обе стороны. Думаю, дело в виртуалке.
Ronan
root@ronan-laptop:
Стоит убунту на виртуалке, на ней самба. Сеть с виндой установлена. Когда копируешь один файл большого размера через сеть с винды на убунту, то он копирует со скоростью 15 метров в сек., а когда заливаешь какой-то сайт с мелкими файликами, картинки, скрипты итд. то заливает со скоростью 20-30 кб/сек. Ну уж слишком мне это не нравится, что сделать можно что бы мелкие заливались ну хотя бы со скоростью пару метров в секунду?
Думаю если фтп поднять то будет намного быстрее заливать, но мне нужен именно сетевой диск что бы быстро работал.
мелкие файлы ты не как не будешь быстро передавать. между передачей файлов сервер будет опрашивать клиентскую сторону, принят файл или нет (или смотри непосредственно в настройках самбы)
Dim0n
хм, странно и фтп подымал, такая же скорость как и по сети через самбу.
А вот на той же виртуалке поставил винду хп и с нее на семерку и обратно 1.5 метра скорость мелких файлов пошла.
и файервол на линуксе отключен, интересно в чем же проблема.
Dim0n
На работе через свитч соединено 5 компов. На 1 убунту, с самбой. Только что погонял - мелкие файлы копирует достаточно быстро (1.5-2 МБ/сек) в обе стороны. Думаю, дело в виртуалке.
какая версия убунты? сервер, десктоп? и версия сама версия циферкой какая? В настройках самбы может что-то менялось такое специфическое что может на скорость повлиять?
TPYCbl
Семейные
Версия Desktop 10.04, в настройках smb ничего не менял.
Сегодня ради интереса поставил на машину с убунтой Virtual Box, туда сп3 хрюшу, прописал айпи и попытался скопировать на винду установленную версию игры WoT (куча файлов разного размера) - скорость упала до 30 КБ/с. Запакованная 1 файлом скинулась за несколько минут. Так что так видимо у всех. Просто через свитч на другой комп с ХР распакованная игра заливалась быстро. Кидаю скриншот копирования папки с мелкими картинками с винды на убунту через свитч.
Несмотря на то, что программа KillCopy давно не поддерживается разработчиком и последняя версия была выпущена в 2006 году, эта маленькая утилита способна помочь системным администраторам, в чём я недавно убедился на практике.
Разработчик: Кононко Дмитрий. IT-шники должны знать своих героев.
Программа для копирования файлов, незаменима при скачивании файлов по сети. "Умная" докачка файлов после срыва скачивания, автоматическое продолжение скачивания после аварийного завершения работы, возможность задачи максимальной скорости копирования. Умеет выключать компьютер после завершения копирования. С возможностью восстановления запорченных файлов (Heal - путем забивания нечитабельных участков нулями - юзать только в крайнем случае). Возможно ускорение копирование больших файлов по сравнению со стандартным в несколько раз на локальных носителях. Умеет так же перемещать и удалять файлы с перезаписью случайными байтами. Поддерживает гибкую системы скинов. Ведет краткий лог скачиваний. Умеет копировать одновременно в несколько целевых каталогов. Умеет создавать жесткие NTFS ссылки на файлы из контекстного меню.
Удобно встраивается в интерфейс Проводника в виде пунктов KillCopy Here, KillMove here в меню перетаскивания файлов и в виде пунктов KillCopy to, KillMove to в контекстом меню файлов и каталогов (по правой кнопке).
Есть у меня сервер с операционной системой Windows Server 2016. Сервер "обезопашен" сверху донизу, закрыт фаерволами, брэндмауэрами, политиками безопасности PCI DSS и ACL правилами доступа на сетевом оборудовании.
И вот понадобилось мне на этот сервер загрузить пару больших файлов, гигов так на десять. Единственный разрешённый способ загрузить на сервер файл — по RDP. Можно копи-пастом, а можно примонтировать при подключении свой локальный диск и скопировать файл с него.
Примонтировал диск, на сервере сетевой путь к нему \\tsclient\C . Первый файл нормально загрузился, а при загрузке второго на 75% зависло RDP соединение. И ещё раз, и ещё.
Прошло пол дня. Ребут не помог. Копи-паст не помог. Архивирование не помогло. Разбитие на мелкие файлы помогло частично, всё загрузилось, но распаковываться не захотелось. Это просто ЭПИК ФЭЙЛ какой-то! Ну почему в виндовом стандартном копировании нет поддержки докачки по сети после восстановления соединения?
При копировании файлов по сети в различных версиях ОС Windows, можно столкнуться с проблемой, которая заключается в очень медленной скорости копировании информации с одного компьютера на другой. В данной статье буду рассмотрены основные причины таких "тормозов".
Включена опция "Удаленное разностное сжатие"
Одной из наиболее часто встречающихся причин медленной скорости копирования между двумя компьютерами является активная работа компонента "Удаленное разностное сжатие".
Удаленное разностное сжатие – это функция Windows, впервые появившаяся в Windows Server 2003 и теперь доступная во всех последних версиях Windows. В Windows 7 эта функция включена по умолчанию.
Удаленное разностное сжатие (RDC) позволяет синхронизировать информацию с удаленным источником, используя технологии сжатия для минимизации объема посылаемой по сети информации. RDC отличается от исправляющихся разностных механизмов, таких как Binary Delta Compression (BDC), которые разработаны только для операций с известными версиями отдельного файла. BDC требует, чтобы на сервере были копии всех версий файла, а разности между каждой парой версий предвычисляется для эффективной передачи с сервера множеству клиентов. В Windows 7 с этим существуют определенные проблемы, поэтому отключение этой функции может помочь решить проблему медленного копирования файлов.
Отключаем удаленное разностное сжатие в Windows 7
Чтобы отключить Удаленное разностное сжатие:
- Нажмите Пуск – Панель управления – Программы – Включение или отключение компонентов Windows.
- Снимите отметку с «Удаленное разностное сжатие» и нажмите Ок.
Жмем "ОК" и обязательно перезагружаем компьютер, чтобы данный компонент был отключен.
Отключаем удаленное разностное сжатие в Windows 10
В Windows 10, процедура отключения Удаленного разностного сжатия выглядит следующим образом:
- Нажмите правой кнопкой на кнопку меню Пуск, и в появившемся меню выберите пункт "Выполнить". В появившемся окне введите команду и нажмите ОК:
- Откроется окно "Программы и компоненты", в его левой панели нужно выбрать пункт "Включение или отключение компонентов Windows".
- В списке компонентов Windows нужно снять галочку с пункта "Поддержка API удаленного разностного сжатие" и нажать "ОК".
- Для применения изменений потребуется перезагрузка.
Читайте также: