Що швидше, і чому: перенесення декількох невеликих файлів або декількох великих файлів?


17

Незабаром у мене з’явиться папка з тисячами файлів, кожен файл на замовлення в кілька КБ. Мені потрібно буде перенести їх через мережу Windows з однієї спільної частини UNC на іншу. Загалом, чи швидше просто копіювати файли масово, чи швидше буде їх копіювати (наприклад, використовуючи 7zip у найшвидшому режимі) та надсилати один чи кілька великих файлів? Або різниці в практиці немає?

Відповіді:


37

Швидше перенести один великий файл замість безлічі маленьких файлів через накладні витрати на переговори про передачу. Переговори проводяться для кожного файлу, тому для перенесення одного файлу його потрібно зробити один раз, перенесення n файлів означає, що це потрібно зробити n разів.

Ви заощадите багато часу, якщо спершу поштовувати перед передачею.


1
en.wikipedia.org/wiki/Slow-start також надає перевагу великим файлам.
Командир Кін

4
Вважайте, що стиснення теж потребує часу. Якщо ваші дані неможливо стиснути (наприклад, JPEG, ZIP-файли, JAR-файли та інші вже стислі формати), вам слід лише TAR (або ZIP без стиснення). Це дозволить заощадити час процесора на безглузду спробу подальшого стиснення ваших даних.
Даніель Шнеллер

Завдяки тому, що багато невеликих файлів заподіють вам багато болю - між крихітними пакетами та за допомогою SMB рукостискання для кожного з них, блискавка, ймовірно, погорне 60% від часу копіювання.
користувач2278,

+1 для TAR, оскільки ви можете скопіювати / витягнути частковий архів.
Крістіан Ват

Ця відповідь правильна, але в Windows 7 (принаймні) є відома помилка, коли копіювання точно такого ж набору файлів на XP відбувається набагато швидше, ніж у Windows 7: social.technet.microsoft.com/Forums/en-US/ w7itproperf / thread /…
tbone

5

Джон Cahill дуже правильний, один файл буде швидше. Однак варто пам’ятати, що якщо є якась нестабільність у зв’язку, окремі файли (або середні групи в zip-файлах) можуть бути кращими, тому що якщо передача не вдасться, вам доведеться починати все заново, тоді як з декількома файли, вам доведеться просто виконати останній розпочатий файл


5
Якщо протокол передачі не відновиться.
Unkwntech

1

Багато невеликих файлів також буде дорожче записувати до файлової системи, ніж один великий файл. Для цього потрібно робити такі дії:

  • Перевірте, чи ім'я файлу унікальне
  • Випишіть запис файлової таблиці

Оскільки ви отримуєте все більше і більше файлів у каталозі, це може стати досить дорогим. І кожен з цих кроків може додати затримку в процесі копіювання і сповільнити все.


1
Я думаю, що йому все-таки знадобляться всі невеликі файли в цільовій системі, тому йому, мабуть, доведеться пізніше витягнути поштовий індекс, тобто файлова система все одно повинна виконати роботу. Однак, надіслати великий файл і розпакувати все одно буде набагато швидше, ніж передавати всі невеликі файли через мережу.
BlaM

@BlaM, як я вже говорив у відповіді, все зводиться до затримки. Якщо затримка в мережі додається до кожної операції CreateFile, загальний час може бути набагато довшим. Якщо копія досить розумна для одночасного створення файлів, можливо, це не вплине на роботу.
Люк Кінане

0

Тут, ймовірно, важливий середній розмір пакета щодо середнього розміру файлу. З великою кількістю маленьких файлів ви можете відправити безліч крихітних пакетів. Крихітні пакети все ще несуть накладні витрати TCP; Ви можете завершити подвоєння кількості трафіку.

Сучасні системи і навіть відносно стародавні можуть надсилати декілька файлів через одне з'єднання TCP, уникаючи витрат на це рукостискання.


0

Просто те, що я знайшов, але якщо ви хочете швидшої передачі, ініціюйте передачу з локального комп'ютера та скопіюйте на локальний диск.

Тобто скопіюйте \ computer1 \ myshare в c: \ files \ myshare, не використовуйте третій комп'ютер і не копіюйте з \ computer1 \ myshare в \ computer2 \ mynewshare.


0

Варто також пам’ятати, що вибір протоколу впливає на загальний час завершення - наприклад, FTP-файли від одного хоста до іншого, можуть бути помітно швидшими, ніж використання спільного доступу до файлів Windows (звичайно, такі речі, як дозволи домену тощо) також є втрачено, але в деяких ситуаціях це може бути прийнятною угодою. Зрештою, вони також можуть бути втрачені за допомогою блискавки / розпакування)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.