Один и тот же 1 ГБ, а папка с фото копируется медленнее одного видео — почему?

· Обновлено: · · Windows, Windows 11, Копирование файлов, Производительность, SSD, NAS, ZIP, robocopy

История изменений (первая версия, опубликована 5 Sep 2026)
Первая публикация

Даже при одинаковом объёме в 1 ГБ время копирования зависит от того, сколько раз приходится открывать, создавать и закрывать файлы. В статье объясняется влияние количества файлов и периодов ожидания, а также приводится способ сравнить ZIP-архив и параллельное копирование в одинаковых условиях.

На схеме сплошная линия обозначает отношение, которое выполняется всегда, а пунктирная — условное отношение (условия указаны в пояснении к каждому отношению на странице сведений). Полный список отношений (всего 11, с доказательствами и степенью уверенности) и определения основных понятий собраны на странице сведений карты знаний (на японском). Данные: JSON-LD / Turtle

Проблема / Вопрос

Видео размером 1 ГБ скопировалось быстро, а копирование папки с фотографиями общим объёмом 1 ГБ никак не заканчивается. Почему при переносе множества мелких файлов падает отображаемая скорость, даже если используется SSD или высокоскоростная локальная сеть?

В этой статье рассматриваются два вопроса: «Почему при одинаковом общем объёме время копирования различается?» и «Как проверить, поможет ли в конкретной среде объединение файлов в ZIP-архив или параллельное копирование?». Медленную работу или неисправность не следует определять лишь по тому, что копируются фотографии. Вместо этого нужно сравнивать количество файлов и время до момента, когда ими можно будет пользоваться.

Среда

Статья предназначена для обычных пользователей Windows 11, которые копируют фактически находящиеся на локальном устройстве стандартные файлы, например фотографии и документы, на внешний накопитель или NAS с общей папкой SMB. NAS — это устройство хранения данных, доступное по сети, а SMB — протокол обмена данными, обычно используемый для общего доступа к файлам в Windows.

В примерах используются Проводник, команда Compress-Archive из Windows PowerShell 5.1 или более новой версии и входящая в состав Windows утилита robocopy. Для выполнения примеров команд нужны права на чтение источника, а также права на создание и запись файлов в экспериментальной папке и в месте назначения. Эти процедуры не предполагают обход контроля доступа с помощью прав администратора.[S7: Compress-Archive] [S9: robocopy]

Распаковка ZIP-архива непосредственно на NAS возможна только в том случае, если устройство предоставляет такую функцию, а у пользователя есть право ею пользоваться. Документация по SMB для серверов приводится для объяснения механизма работы. Это не означает, что все устройства NAS имеют одинаковые настройки или возможности.

Объяснение основано на официальной документации, проверенной 17 сентября 2026 года. Числовые примеры ниже представляют собой расчёты на основе заданных допущений, а описанные операции — процедуры, с помощью которых читатели могут проверить собственную среду. Это не результаты измерений на конкретном компьютере с Windows, SSD или NAS. Загрузка облачных файлов, доступных только через интернет, и проектирование полноценной системы резервного копирования выходят за рамки статьи.

Ответ / Решение

Время копирования определяется не только общим количеством байтов. Если для множества файлов приходится повторять операции создания, управления и завершения, увеличивается время, затрачиваемое не на передачу содержимого, а на сопутствующую обработку. При работе с общей папкой SMB также влияет ожидание обработки запросов удалённой системой и получения ответов. Объединение файлов в ZIP-архив или параллельное копирование с помощью robocopy иногда помогает, но ускорение не гарантируется.[S1: Slow SMB files transfer speed]

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

Определение

Копирование файла заключается не только в записи его содержимого в другое место. Необходимо создать файл в месте назначения и задать требуемые атрибуты, даты, время и другие сведения. В этой статье обработка и ожидание, необходимые для работы с каждым файлом, называются «дополнительным временем на файл» и рассматриваются отдельно от времени передачи содержимого.[S2: CreateFileW function]

«Мелкие файлы» — не другое название фотографий. Несколько больших фотографий и десятки тысяч маленьких изображений создают разные условия. При сравнении учитываются и общее количество байтов содержимого, соответствующее показателю «Размер» папки, и количество файлов, а не только показатель «На диске».

При переезде один большой ящик и десять тысяч посылок, у каждой из которых нужно проверить адрес, могут весить одинаково, но требовать совершенно разного объёма работы. Так же и «перенести 1 ГБ» и «обработать 10 000 файлов» — разные задачи.

Разное количество файлов при одинаковом объёмеДаже если общий объём данных равен 1 ГБ, один файл и множество файлов требуют разного количества операций управления.Всего 1 ГБ данныхОдин большой файл10 000 мелких файловМало операций для отдельных файловПовторять операции для каждого файла

Рисунок 1. Одинаковое количество байтов не означает одинакового количества файлов.

В приведённых далее демонстрационных данных 1 ГБ означает 1 000 000 000 байт, а 100 КБ — 100 000 байт. При сравнении записывайте фактическое количество байтов, а не округлённые значения, отображаемые Windows или другими инструментами.

Назначение

Цель копирования — привести необходимый набор файлов в состояние, в котором ими можно пользоваться в нужном месте. Высокое значение МБ/с в окне передачи не обязательно позволяет быстрее достичь этой цели, если создание или распаковка ZIP-архива занимает много времени.

ZIP объединяет передаваемые файлы, а параллельное копирование позволяет периодам ожидания при обработке нескольких файлов перекрываться. Пока одна операция ожидает ответа, другая может продолжать передачу. Это не увеличивает задержку. Ни один из способов не ускоряет саму сеть или диск; каждый из них эффективен при своих условиях.[S1: Slow SMB files transfer speed] [S4: Performance Tuning for SMB File Servers]

Цель выбора способа копированияПоместить один и тот же набор файлов в нужное место, проверить содержимое и сравнить время до готовности к использованию.Поместить те же файлы в нужное местоЗавершить копированиеСверить количество и содержимоеСравнить время до готовности к использованию

Рисунок 2. Цель выбора способа — правильно подготовить один и тот же набор файлов к использованию.

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

Структура

Содержимое, служебные сведения и путь копирования

При копировании открывается источник, создаётся файл назначения, читается и записывается содержимое, задаются необходимые сведения, после чего файл закрывается. Операция открытия файла в Windows также учитывает запрошенные права доступа и режим общего доступа, определяющий, могут ли другие процессы одновременно открыть этот файл.[S2: CreateFileW function]

Сведения, используемые для управления файлом, например имя, размер, дата и время, называются метаданными. NTFS хранит служебные сведения о каждом файле в таких структурах, как главная файловая таблица MFT. Поэтому копирование не сводится к одной лишь записи данных пикселей фотографии.[S3: Master File Table]

Операции при копировании одного файлаДля каждого файла требуется открыть источник, создать файл назначения, передать содержимое, обработать служебные сведения и закрыть файл.Открыть источникСоздать файл назначенияПрочитать и записать содержимоеЗадать сведения и закрыть файлПовторить для следующего файла

Рисунок 3. Это концептуальная последовательность. Фактический порядок и параллельное выполнение зависят от способа копирования и файловой системы.

Что исследовать Какие условия сохранять одинаковыми при сравнении
Содержимое файлов Общее количество байтов, количество файлов, содержимое и степень сжимаемости.
Накопитель и операции управления Исходное и целевое устройства, свободное место, файловая система и одновременная нагрузка.
Путь и способ копирования Локальное хранилище или общая папка SMB, сеть, приложение для копирования и устройство, выполняющее распаковку.

Операции управления файлами остаются необходимыми и при использовании SSD. Не оценивайте время копирования 10 000 файлов только по высокой скорости последовательной передачи большого файла и не называйте любое копирование мелких файлов случайным вводом-выводом. Раздельно учитывайте размещение данных и нагрузку от обработки отдельных файлов.[S3: Master File Table] [S1: Slow SMB files transfer speed]

Принцип работы

Причины различий во времени при одинаковом объёме можно разделить на три области: ожидание ответов, объединение файлов в ZIP-архив и место выполнения распаковки.

Пропускная способность NAS и ожидание ответа влияют независимо друг от друга

При работе с общей папкой SMB компьютер может отправить запрос на файловую операцию, дождаться её обработки удалённой файловой системой, а затем дождаться возвращения ответа. Когда множество мелких файлов копируется последовательно, операции создания файлов могут занимать больше времени, чем передача их содержимого, из-за чего часть пропускной способности сети остаётся неиспользованной.[S1: Slow SMB files transfer speed]

Файловые операции по сетиЗапрос от компьютера проходит по сети, обрабатывается удалённой файловой системой, после чего ответ возвращается на компьютер.Компьютер запрашивает файловую операциюЗапрос проходит по сетиУдалённая система обрабатывает файлОтвет возвращается на компьютер

Рисунок 4. Возможность передать большой объём за один раз и возможность быстро ответить на отдельную операцию — разные характеристики.

Пропускную способность можно сравнить с количеством полос на дороге, а задержку — со временем до получения ответа. Проверка антивирусом также может влиять на время обработки каждого файла.[S1: Slow SMB files transfer speed]

Это не означает, что каждый файл обязательно вызывает фиксированное количество сетевых обменов. SMB позволяет объединять несколько запросов на операции, а кэширование и параллельная обработка также меняют характер ожидания. Не считайте домашнюю локальную сеть и удалённую общую папку одинаковыми условиями.[S5: Sending Compounded Requests] [S8: File Caching]

Оценивайте сжатие и объединение файлов в ZIP отдельно

ZIP может как сжимать данные, так и объединять несколько файлов в одном контейнере. Данные JPEG уже сжаты, поэтому после добавления файлов JPEG в ZIP их объём может уменьшиться совсем незначительно. Тем не менее количество передаваемых файлов можно сократить с 10 000 до одного.[S6: Zip and unzip files]

Две функции ZIPОбъединение в ZIP изменяет количество передаваемых файлов, а сжатие — количество передаваемых байтов; это разные эффекты.Объединить фотографии в ZIPПередать один файлИзменение объёма зависит от содержимого

Рисунок 5. Даже если данные почти не сжимаются, ZIP позволяет уменьшить количество передаваемых файлов.

Если фотографии в итоге нужны как обычные файлы в папке, сравнивайте следующую сумму:

Время при использовании ZIP = создание ZIP + передача ZIP + распаковка

При создании ZIP каждый мелкий файл читается, а при распаковке каждый из них создаётся заново в месте распаковки. Работа с отдельными файлами не исчезает: меняются место её выполнения и форма передачи. Если обработка до и после передачи требует значительного времени, копирование без объединения может оказаться быстрее.[S1: Slow SMB files transfer speed]

Различайте устройства, выполняющие распаковку

Если отправить ZIP на компьютер получателя и распаковать его на локальный диск этого компьютера, отдельные мелкие файлы не придётся создавать по сети. Microsoft также описывает распаковку архива на целевой системе вместо удалённой распаковки.[S1: Slow SMB files transfer speed]

Распаковка на целевом устройстве и распаковка с компьютера в общую папкуСледует различать внутреннюю распаковку целевым устройством и запись компьютером каждого распакованного файла в общее место назначения.Отправить ZIP на целевое устройствоЦелевое устройство распаковывает его внутри себяРаспаковать в приложении на компьютереОтправить мелкие файлы в общую папку

Рисунок 6. То, что ZIP хранится на NAS, ещё не означает, что распаковка также выполняется внутри NAS.

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

Если NAS не поддерживает такую функцию, измеряйте весь фактически доступный путь. При распаковке внутри NAS и локальной распаковке на компьютере конечные места назначения различаются, поэтому их время нельзя напрямую сравнивать как выполнение одной и той же задачи.

Примеры

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

Упрощённый расчёт для 1 ГБ и 10 000 файлов

Ниже приведена концептуальная модель, предполагающая, что все операции выполняются последовательно и не перекрываются. Это не точная формула, используемая Windows.

Время копирования ≒ Общее количество байтов ÷ скорость передачи данных
                     + Количество файлов × дополнительное время на файл

Для иллюстрации предположим, что скорость передачи данных равна 100 МБ/с, а дополнительное время на один файл — 2 мс. Поскольку здесь 1 ГБ равен 1 000 МБ, передача данных занимает 10 секунд. Дополнительное время составляет 0,002 секунды для одного файла и 20 секунд для 10 000 файлов, поэтому во втором случае иллюстративное общее время будет равно приблизительно 30 секундам.

Разделение времени копирования на две составляющиеВремя передачи, определяемое общим объёмом, рассматривается отдельно от дополнительного времени, которое накапливается с увеличением количества файлов.Время, зависящее от общего объёмаОбщее время копированияДополнительное время, зависящее от количества файлов

Рисунок 7. С увеличением количества файлов на время начинает влиять не только объём данных.

Эти значения рассчитаны на основе допущений. Параллельная обработка, кэши, ограничения процессора и накопителя не учитываются, поэтому расчёт не предсказывает, что реальному устройству обязательно потребуется 30 секунд.

Большой файл, набор мелких файлов и ZIP без сжатия

Основа сравнительных данных

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

Вариант Состав Общее содержимое
A Один файл one.bin размером 1 ГБ. 1 000 000 000 байт.
B 10 000 файлов размером 100 КБ с именами от part-00000.bin до part-09999.bin. 1 000 000 000 байт.
C Архив small.zip без сжатия, содержащий папку small из варианта B. После распаковки содержимое совпадает с B; сам ZIP также содержит служебные сведения.
Три представления сравнительных данныхСоздаются один большой файл и набор мелких файлов с одинаковым общим содержимым, после чего из мелких файлов создаётся ZIP без сжатия.Подготовить одинаковый общий объём 1 ГБОдин файл размером 1 ГБ10 000 файлов размером 100 КБПоместить то же содержимое в ZIP без сжатия

Рисунок 8. ZIP без сжатия позволяет наблюдать эффект объединения файлов отдельно от изменения размера при сжатии.

Варианты A и B содержат одинаковое количество данных, однако размер ZIP-файла C не будет в точности равен 1 000 000 000 байт. Созданные из псевдослучайных байтов файлы .bin нельзя открыть как настоящие фотографии или видео; они не подходят для проверки качества фотографий и не воспроизводят поведение приложений, обрабатывающих реальные медиафайлы.

Порядок действий

Сначала выполните сравнение в Проводнике и лишь при необходимости сравните разные уровни параллелизма robocopy. Используйте тестовые данные, а не важные фотографии или документы, и не путайте копирование с перемещением.

Не изменяйте в ходе проверки защитные функции, подписывание SMB, параметры синхронизации и аналогичные настройки. Если права на запись или операции с NAS регулируются администратором, не обходите установленные ограничения, а обратитесь к ответственному специалисту.[S10: SMB signing overview]

Создать тестовые файлы одинакового суммарного размера

Используйте Windows PowerShell 5.1 или более поздней версии и убедитесь, что временная папка находится на локальном диске. Наборы A и B вместе занимают около 2 ГБ, а с ZIP-архивом потребуется около 3 ГБ. На исходном диске должно быть не менее 5 ГБ свободного места, а на целевом — достаточно места для всех попыток копирования и распаковки. Последовательно выполняйте приведённые ниже примеры PowerShell в одном и том же сеансе.

Создание двух наборов данных из одинаковых последовательностей байтовКаждый созданный блок из 100000 псевдослучайных байтов добавляется в большой файл и сохраняется как отдельный маленький файл.Создать 100000 байтовДобавить в one.binСохранить в отдельном файле partПовторить 10000 раз

Рисунок 9. Запись одинаковых созданных данных в оба набора обеспечивает равенство суммарного количества байтов их содержимого.

  1. Убедитесь, что работа будет выполняться в новой тестовой папке без использования существующих данных.

    Код создаёт папку copylab с уникальным именем. Запишите показанный путь. Процедура не возобновляет незаметно прерванный запуск: если возникнет ошибка, исключите данные этого запуска из сравнения.

  2. Выполните следующий код, чтобы создать один большой файл и набор маленьких файлов.

    $ErrorActionPreference = 'Stop'
    $lab = Join-Path ([System.IO.Path]::GetTempPath()) ('copylab-' + [guid]::NewGuid().ToString('N'))
    $drive = New-Object System.IO.DriveInfo ([System.IO.Path]::GetPathRoot($lab))
    if ($drive.AvailableFreeSpace -lt 5GB) {
        throw 'Обеспечьте не менее 5 ГБ свободного места на диске для эксперимента.'
    }
    $largeDir = Join-Path $lab 'large'
    $smallDir = Join-Path $lab 'small'
    [System.IO.Directory]::CreateDirectory($largeDir) | Out-Null
    [System.IO.Directory]::CreateDirectory($smallDir) | Out-Null
    Write-Host "Создано в: $lab"
        
    $fileCount = 10000
    $buffer = New-Object byte[] 100000
    $random = New-Object System.Random 20260905
    $large = [System.IO.File]::Open(
        (Join-Path $largeDir 'one.bin'),
        [System.IO.FileMode]::CreateNew,
        [System.IO.FileAccess]::Write,
        [System.IO.FileShare]::None
    )
    try {
        for ($i = 0; $i -lt $fileCount; $i++) {
            $random.NextBytes($buffer)
            $name = 'part-{0:D5}.bin' -f $i
            [System.IO.File]::WriteAllBytes((Join-Path $smallDir $name), $buffer)
            $large.Write($buffer, 0, $buffer.Length)
        }
    }
    finally {
        $large.Dispose()
    }
    Write-Host "Подготовка завершена. Каждый набор данных содержит $([long]$fileCount * $buffer.Length) байтов."
    
  3. Убедитесь, что подготовка завершена, затем проверьте количество файлов и их суммарный размер в папках large и small.

    Файл one.bin в папке large должен иметь размер 1,000,000,000 байтов. Папка small должна содержать 10000 файлов размером 100000 байтов каждый. Проверьте количество байтов содержимого, например в свойствах папки. Одного сообщения о завершении недостаточно, чтобы считать правильность последующего копирования подтверждённой.

В одной тестовой папке будут созданы наборы A и B. Одинаковые последовательности байтов записываются как в один файл, так и в набор отдельных файлов, поэтому каждый набор содержит 1,000,000,000 байтов. Псевдослучайные данные позволяют избежать чрезвычайно высокой сжимаемости файла, заполненного нулями, но не гарантируют тех же характеристик производительности, что и реальные фотографии.

Создать ZIP без сжатия и записать время его создания

Убедитесь, что предыдущий этап создания файлов успешно завершён, а переменные $lab и $smallDir по-прежнему определены в том же сеансе PowerShell. Эта процедура предназначена только для созданных обычных файлов. У Compress-Archive есть ограничения, включая пропуск скрытых файлов, поэтому не используйте этот пример для полного резервного копирования важной папки.

  1. Выполните следующий код в том же сеансе PowerShell.

    $zip = Join-Path $lab 'small.zip'
    $watch = [System.Diagnostics.Stopwatch]::StartNew()
    Compress-Archive -LiteralPath $smallDir -DestinationPath $zip -CompressionLevel NoCompression
    $watch.Stop()
    Write-Host "Создание ZIP: $($watch.Elapsed.TotalSeconds) с"
    Write-Host "Размер ZIP: $((Get-Item -LiteralPath $zip).Length) байтов"
    

    Параметр NoCompression сохраняет файлы в ZIP без сжатия их содержимого. При этом архив всё равно содержит служебную информацию.[S7: Compress-Archive]

  2. Запишите время создания ZIP в секундах и размер ZIP-файла в байтах.

    Убедитесь, что файл small.zip создан. После распаковки файлы окажутся внутри папки small, поэтому при последующей проверке количества элементов сравнивайте содержимое этой папки. Исключите неудачные попытки создания архива и перед повторным запуском проверьте исходные тестовые данные и свободное место.

Теперь у вас есть набор C, содержащий те же файлы, что и B, а также запись времени создания ZIP. Создание A и B относится к подготовке эксперимента, тогда как создание ZIP является издержкой метода с ZIP и должно учитываться при сравнении.

Скопировать по одному и тому же пути и измерить время до готовности файлов к использованию

Не изменяйте исходное и целевое устройства, подключение, приложение и одновременную нагрузку. Для каждой попытки потребуются права и достаточный объём свободного места, чтобы подготовить новое пустое место назначения. Проверяйте содержимое после измеряемого интервала, не включая проверку в замер времени. Цель сравнения — привести B и C в пригодное для использования состояние в одном и том же конечном месте назначения.

Порядок выравнивания условий сравненияПуть и способ копирования остаются неизменными; порядок испытаний меняется, копирование несколько раз выполняется в новое пустое место, а после завершения проверяется содержимое.Те же устройства, путь и способКаждый раз новое пустое место назначенияНесколько измерений в разном порядкеПроверить также количество и содержимое

Рисунок 10. Не принимайте время, сэкономленное благодаря пропуску уже существующего файла, за ускорение передачи.

  1. Запишите устройства, путь и способ копирования, а также устройство, на котором выполняется распаковка.

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

  2. Поочерёдно скопируйте A, B и C с помощью Проводника в новые пустые места назначения.

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

  3. Если C должен использоваться как набор отдельных файлов, измерьте также время распаковки.

    Если для сравнения требуются распакованные файлы, сложите время создания, передачи и распаковки ZIP. Включайте ранее измеренное время создания ZIP как постоянную издержку каждого сравнения; многократное использование одного и того же ZIP фиксируйте как отдельное условие. Даже при одинаковом месте сохранения обязательно укажите, выполнялась ли распаковка на PC с записью через SMB или непосредственно на NAS его собственной функцией.

  4. Измерьте каждый случай несколько раз — например, три раза — меняя порядок, а затем запишите медиану и разброс результатов.

    Новое место назначения не очищает кэш на стороне источника. Отмечайте случаи, когда только второе чтение становится быстрее, и учитывайте влияние чтения при проверке содержимого на следующую попытку. Эта процедура позволяет наблюдать тенденции, близкие к обычному копированию, но не является строгим измерением производительности носителя без кэширования.[S8: File Caching]

В результате сохранятся время и условия измерения для A, B и C. В таблице раздела «Проверка» используйте A как контрольный случай, а B и C сравнивайте как разные способы размещения одного и того же набора файлов. При оценке скорости учитывайте только успешно завершённые попытки.

Сравнить уровни параллелизма robocopy, если ZIP не подходит

Используйте тот же сеанс PowerShell, в котором были созданы тестовые данные. Убедитесь, что $smallDir указывает на эти данные, журнал можно записать в $lab, а родительская папка места назначения доступна для записи. Сохраните исходные данные и создавайте новое место назначения для каждого запуска. Не добавляйте параметры, удаляющие данные, такие как /MIR, /PURGE или /MOVE.

Перекрытие периодов ожидания для отдельных файловПри одновременной обработке нескольких файлов другой файл может передаваться, пока один файл ожидает ответа.Обрабатывать несколько файлов параллельноФайл A ожидает ответаФайл B передаётсяПерекрыть периоды ожидания

Рисунок 11. Параллельность позволяет перекрывать периоды ожидания, но не ускоряет саму сеть или диск.

  1. Уточните, почему ZIP не подходит: например, отдельные файлы нужны сразу или изменения приходится передавать многократно.

    Параметр /MT программы robocopy обрабатывает несколько файлов параллельно. Пока одна операция ожидает ответа, может продолжаться другая передача, однако скорость самой сети или устройства от этого не увеличивается.[S9: robocopy] [S4: Performance Tuning for SMB File Servers]

  2. Измените $targetRoot, указав доступное вам для записи место назначения, и выполните следующий код.

    $targetRoot = '\\NAS\share\CopyLab' # Укажите своё место назначения
    $runId = [guid]::NewGuid().ToString('N')
    $target = Join-Path $targetRoot ('small-mt8-' + $runId)
    $log = Join-Path $lab ('robocopy-' + $runId + '.log')
    robocopy $smallDir $target /E /MT:8 /R:1 /W:1 /XJ "/LOG:$log"
    $code = $LASTEXITCODE
    if ($code -ge 8) {
        throw "При копировании произошёл сбой. Код завершения=$code; журнал=$log"
    }
    Write-Host "Код завершения=$code. Проверьте в журнале количество скопированных, пропущенных, несовпадающих и не скопированных файлов, а также содержимое места назначения: $log"
    

    Замените приведённые в примере имена NAS и общей папки. Используя то же правило измерения, засеките время непосредственно перед запуском команды и остановите отсчёт после её завершения. Сохраните показанный путь к журналу и код завершения.

  3. Тем же способом сравните /MT:1 и /MT:8, сохраняя неизменными все условия, кроме уровня параллелизма.

    При каждом повторном запуске создаются место назначения и журнал с новым GUID. Часть small-mt8 в имени папки примера обозначает условие испытания; при проверке /MT:1 измените её на small-mt1, чтобы записи можно было различить. Не изменяйте одновременно использование ZIP и параллелизм: оценивайте по одному изменению за раз.

    /MT:8 — лишь отправная точка для сравнения, а не оптимальное значение. Чрезмерный параллелизм может увеличить нагрузку на удалённую систему и замедлить копирование. Не считайте попытку с ошибками подтверждением ускорения; проверьте журнал и содержимое места назначения.[S1: Slow SMB files transfer speed]

Для одного и того же набора файлов B сохранятся время, журнал и результат проверки содержимого для каждого уровня параллелизма. Код завершения 8 или выше означает наличие сбоя и останавливает выполнение примера, однако и при коде от 0 до 7 необходимо выполнить следующую проверку.

Проверка

Завершение оценивается по двум независимым критериям: все ли данные скопированы и сократилось ли при одинаковых условиях время до момента, когда ими можно пользоваться. Сообщение о завершении копирования или код завершения не заменяют проверку целостности.

Сверка количества файлов, содержимого и результатов команды

Ожидаемые результаты и действия при несоответствии
Объект проверки Ожидаемый результат Действия при несоответствии
Каталог назначения для A Один файл one.bin размером 1 000 000 000 байт. Исключить этот запуск из сравнения и проверить исходные данные, каталог назначения и журнал.
Каталог назначения для B 10 000 файлов от part-00000.bin до part-09999.bin общим объёмом 1 000 000 000 байт. Проверить, не были ли файлы пропущены, не возникли ли ошибки и не смешались ли в каталоге назначения результаты разных запусков.
C после извлечения В папке small находятся те же относительные имена файлов, то же количество файлов и то же общее число байтов, что и в B. Проверить структуру каталогов в месте извлечения и определить, на каком этапе — создания ZIP, передачи или извлечения — были потеряны файлы.

Совпадение количества и размеров файлов ещё не доказывает идентичность их содержимого. При необходимости вне измеряемого интервала сравните хеши соответствующих исходных и скопированных файлов. Чтение данных при проверке может повлиять на состояние кеша в следующем испытании, поэтому зафиксируйте, когда именно выполнялась проверка.

Проверка содержимого перед сравнением времениПроверьте количество и размеры файлов, при необходимости сравните хеши и не считайте ускорением результаты запусков с несовпадениями или ошибками.данетданетПроверить количество и размерыОни совпадают?При необходимости сравнить хешиИсключить этот запуск и выяснить причинуНет несовпадений и ошибок?Сравнить время при одинаковых условиях

Рисунок 12: Отображаемую скорость и правильность скопированного содержимого следует проверять отдельно.

Параметры robocopy и коды завершения
Параметр или результат Значение в этом примере
/E Копировать все подкаталоги, включая пустые.
/MT:8 Копировать параллельно в восемь потоков; сравнить с /MT:1.
/R:1 /W:1 После ошибки выполнить одну повторную попытку, подождав перед ней одну секунду.
/XJ Исключить точки соединения; в этом сравнении используются созданные обычные файлы.
/LOG Записывать отдельный журнал для каждого запуска.
Код завершения 1 Может быть возвращён и после успешного копирования; ненулевой код сам по себе не означает ошибку.
Код завершения 8 или выше Произошла как минимум одна ошибка копирования; прекратите сравнение скорости и изучите журнал.
Код завершения 0–7 Сам по себе не гарантирует полноту копии; проверьте количество скопированных, пропущенных, несовпадающих и не скопированных из-за ошибок файлов, а также сами файлы.

Параметры и коды завершения описаны в документации Microsoft по robocopy. По умолчанию копируются данные, атрибуты и временные метки; этот пример не является полной резервной копией, сохраняющей все сведения, включая списки управления доступом (ACL).[S9: robocopy]

Запись фактических результатов измерений

Таблица для заполнения результатами

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

Случай Время создания Время передачи Время извлечения Общее время до готовности к использованию
A: один большой файл Не учитывать: это подготовка к сравнению Измерить и записать Не требуется Время передачи, используемое как контрольное значение
B: 10 000 небольших файлов Не учитывать: это подготовка к сравнению Измерить и записать Не требуется Время передачи
C: несжатый ZIP с содержимым B Записать время создания ZIP Измерить и записать Записать, если требуется Создание + передача + извлечение

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

Как отличить низкую скорость от ошибки копирования

Проверьте отдельно, медленно ли копируются только большие наборы небольших файлов, медленно ли копируются также большие файлы и что происходит при локальном копировании того же файла. Если скорость снижается в ходе передачи, на результат может влиять кеширование; одной отображаемой скорости недостаточно, чтобы определить причину.[S8: File Caching] [S1: Slow SMB files transfer speed]

Определение области проблемы с низкой скоростью копированияОтделите случай, когда медленно копируются только небольшие файлы, от случая, когда копирование остаётся медленным независимо от вида данных.данетМедленно копируются только небольшие файлы?Проверить количество файлов и время ожиданияПроверить также устройства, соединения и нагрузкуПроверить также ошибки и разрывы соединения

Рисунок 13: Низкая скорость копирования небольших файлов — не то же самое, что ошибка копирования или неисправность устройства.

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

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

Ограничения

Что можно и чего нельзя установить с помощью этого сравнения

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

Даже при использовании нового пустого каталога назначения состояние кеша чтения операционной системы и самих устройств не становится полностью одинаковым. Время до закрытия окна копирования также не показывает, успели ли все данные записаться так, чтобы пережить внезапное отключение питания. Не проверяйте это, извлекая внешнее устройство сразу после копирования; используйте обычную процедуру безопасного извлечения.[S8: File Caching]

Резервное копирование и защитные функции — отдельные требования

Созданные файлы .bin и несжатый ZIP предназначены только для сравнения. У Compress-Archive есть ограничения, в том числе пропуск скрытых файлов, а обычный вызов robocopy не сохраняет все атрибуты и разрешения. Не проектируйте полную резервную копию важных данных, опираясь только на это сравнение скорости.[S7: Compress-Archive] [S9: robocopy]

В этой статье не рекомендуется отключать антивирусную защиту или подпись SMB ради повышения скорости. Подпись SMB защищает обмен данными от подмены. Не обходите настройки управляемого компьютера; обратитесь к ответственному администратору.[S10: SMB signing overview]

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

Источники

Источники проверены 17 сентября 2026 года. Ниже для каждого источника указано, какие положения он подтверждает. Примеры настроек из документации для серверов не предназначены для непосредственного применения обычными пользователями или на любом NAS.

[S1] Microsoft Learn, Slow SMB files transfer speed. Подтверждает сведения о нагрузке, связанной с созданием файлов, обменом данными и проверкой при работе с большим количеством небольших файлов, а также о параллельном копировании и извлечении архива на стороне назначения.

[S2] Microsoft Learn, CreateFileW function. Описывает открытие и создание файлов, запрашиваемые права доступа и режимы совместного доступа.

[S3] Microsoft Learn, Master File Table. Описывает, как NTFS хранит служебную информацию для каждого файла.

[S4] Microsoft Learn, Performance Tuning for SMB File Servers. Подтверждает сведения о параллельном копировании и ведении журналов robocopy при работе с небольшими файлами.

[S5] Microsoft Open Specifications, Sending Compounded Requests. Описывает механизм совместной отправки нескольких связанных операций в SMB2.

[S6] Microsoft Support, Zip and unzip files. Подтверждает сведения об объединении файлов в ZIP и отмечает, что уже сжатые форматы, такие как JPEG, могут уменьшаться в размере лишь незначительно.

[S7] Microsoft Learn, Compress-Archive. Описывает параметр NoCompression и ограничения, включая пропуск скрытых файлов.

[S8] Microsoft Learn, File Caching. Описывает системный файловый кеш и механизм отложенной записи.

[S9] Microsoft Learn, robocopy. Описывает параллелизм, повторные попытки, ведение журнала, параметры копирования и коды завершения.

[S10] Microsoft Learn, SMB signing overview. Описывает защитное назначение подписи SMB и особенности её применения.

Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.

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

Эта статья ведёт к следующим страницам услуг. Начните с ближайшей к вашей задаче.

Частые вопросы

Вопросы, которые часто возникают при консультациях по теме статьи.

Почему папка с фото копируется медленнее при том же объёме?
Копирование — это не только перенос содержимого. Для каждого файла создаётся файл назначения, ведутся сведения о нём, он закрывается и так далее. Когда мелких файлов много, доля этой обработки и ожидания растёт. Важно не сам формат фото, а число файлов и размер каждого.
На SSD или быстрой LAN мелкие файлы всё равно копируются медленно?
Да. Даже на SSD работа по управлению файлами остаётся, а при копировании на NAS и подобное добавляется время ожидания сети и обработки на другой стороне. Скорость непрерывной передачи крупных файлов и скорость обработки множества мелких — разные вещи.
Если JPEG в ZIP почти не сжимаются, есть ли смысл их собирать?
Даже когда размер почти не уменьшается, эффект сборки передаваемых файлов в один остаётся. Но создание и распаковка ZIP тоже занимают время. Для сценариев, где нужна распаковка, сравнивайте суммарное время создания, передачи и распаковки.
Быстрее ли отправить ZIP на NAS и затем распаковать его в общую папку с ПК?
При таком способе ПК пишет распакованные мелкие файлы на NAS, поэтому создание файлов по сети происходит заново. Отличайте это от распаковки внутри NAS функцией, которую поддерживает сам NAS, и измеряйте с учётом распаковки.
Параллельное копирование robocopy ускоряется, чем больше потоков?
Нет. Параллельность позволяет перекрывать ожидания по файлам, но и увеличивает нагрузку на накопитель или NAS. Сравнивайте в одинаковых условиях, начиная с небольшого числа потоков, и по журналу проверяйте сбои копирования и пропущенные файлы.

Об авторе

Страница с профилем автора статьи.

Го Комура

Представитель KomuraSoft LLC

Работает в основном с разработкой ПО для Windows, техническими консультациями и поиском причин неисправностей; сильные стороны — проекты, где остаются существующие активы, и расследование сбоев, причину которых трудно увидеть.

Публичные ссылки

Вернуться в блог