Hangisi daha hızlı ve neden: birkaç küçük dosyayı veya birkaç büyük dosyayı aktarmak?


17

Yakında binlerce dosya içeren bir klasörüm olacak, her dosya birkaç KB civarında. Bunları bir Windows ağı üzerinden bir UNC paylaşımından diğerine aktarmam gerekecek. Genel olarak, dosyaları toplu olarak kopyalamak daha hızlı mı yoksa dosyaları sıkıştırmak (örneğin en hızlı modda 7zip kullanarak) ve bir veya birkaç büyük dosya göndermek daha hızlı mı olur? Yoksa pratikte bir fark yok mu?

Yanıtlar:


37

Aktarım üzerinde anlaşmaya varma yükü nedeniyle çok sayıda küçük dosya yerine tek bir büyük dosyayı aktarmak daha hızlıdır. Görüşme her dosya için yapılır, bu yüzden tek bir dosyanın aktarılması bir kez yapılması gerekir, n dosya aktarımı n kez yapılması gerektiği anlamına gelir.

Transferden önce ilk önce fermuar yaparsanız kendinize çok zaman kazandıracaksınız.


1
en.wikipedia.org/wiki/Slow-start da büyük dosyaları destekler.
Komutan Keen

4
Sıkıştırmanın da zaman alacağını düşünün. Verileriniz sıkıştırılamıyorsa (örn. JPEG, ZIP, JAR ve diğer sıkıştırılmış biçimler) yalnızca TAR (veya sıkıştırılmamış ZIP) gerekir. Bu, verilerinizi daha da sıkıştırmaya yönelik anlamsız girişim için CPU zamanından tasarruf sağlayacaktır.
Daniel Schneller

Birçok küçük dosya size çok fazla acıya neden olur - küçük paketler arasında ve her biri için bir SMB el sıkışma yapmak, zipleme muhtemelen kopyalama sürenizde% 60 oranında iyi bir tıraş olur.
user2278

Kısmi arşivi kopyalayabileceğiniz / çıkarabileceğiniz için TAR için +1.
Cristian Vat

Bu yanıt doğrudur, ancak Windows 7'de (en azından), aynı dosya kümesinin XP'ye kopyalanmasının Windows 7'den çok daha hızlı olduğu bilinen bir hata vardır : social.technet.microsoft.com/Forums/en-US/ w7itproperf / iplik / ...
tbone

5

Jon Cahill çok doğru, tek bir dosya daha hızlı olacak. Bununla birlikte, bağlantıda herhangi bir istikrarsızlık varsa, tek tek dosyaların (veya zip dosyalarındaki orta boyutlu grupların) daha iyi olabileceğini akılda tutmak gerekir, çünkü aktarım başarısız olursa, baştan başlamanız gerekir, oysa çoklu Başlatılan son dosyayı yeniden yapmanız gereken dosyalar


5
Aktarım protokolü kaldığı sürece.
Unkwntech

1

Birçok küçük dosyanın dosya sistemine yazılması da tek bir büyük dosyadan daha pahalı olacaktır. Bunun gibi şeyler yapması gerekir:

  • Dosya adının benzersiz olup olmadığını kontrol edin
  • Dosya tablosu girişini yazın

Bir dizinde daha fazla dosya aldıkça bu oldukça maliyetli olabilir. Ve bu adımların her biri kopyalama işlemine gecikme ekleyebilir ve her şeyi yavaşlatabilir.


1
Sanırım hala hedef sistemdeki tüm küçük dosyalara ihtiyacı olacak, bu yüzden muhtemelen daha sonra zip'i çıkarmak zorunda kalacak, yani dosya sistemi hala işi yapmak zorunda kalacak. Yine de büyük dosyayı göndermek ve açmak, tüm küçük dosyaları net üzerinden aktarmaktan çok daha hızlı olacaktır.
BlaM

@BlaM, cevapta söylediğim gibi, hepsi gecikmeye iniyor. Her CreateFile işlemine ağ gecikmesi eklenirse, toplam süre çok daha uzun olabilir. Kopya eşzamanlı olarak dosya oluşturacak kadar akıllıysa, işlemi etkilemez.
Luke Quinane

0

Ortalama dosya boyutuna göre ortalama paket boyutu muhtemelen burada kritiktir. Çok sayıda küçük dosyayla kendinizi çok sayıda küçük paket gönderirken bulabilirsiniz. Küçük paketler hala TCP yüküne maruz kalır; sonuç olarak trafik miktarını iki katına çıkarabilirsiniz.

Modern sistemler ve hatta nispeten eski olanları bile tek bir TCP bağlantısı üzerinden birden fazla dosya göndererek bu el sıkışmasının maliyetinden kaçınabilir.


0

Bulduğum şey, ancak daha hızlı bir aktarım istiyorsanız, yerel bilgisayardan aktarımı başlatın ve yerel sürücüye kopyalayın.

Yani \ computer1 \ myshare'i c: \ files \ myshare dizinine kopyalayın, üçüncü bir bilgisayar kullanmayın ve \ computer1 \ myshare dizininden \ computer2 \ mynewshare dizinine kopyalamayın.


0

Protokol seçiminin tamamlama süresini genel olarak etkilediğini de hatırlamakta fayda var - örneğin, bir ana bilgisayardan diğerine FTP dosyaları, Windows dosya paylaşımını kullanmaktan belirgin şekilde daha hızlı olabilir (elbette, alan adı izinleri ve benzerleri de kayboldu, ancak bazı durumlarda bu kabul edilebilir bir takas olabilir - Sonuçta, bunlar zipleme / unzipping ile de kaybedilir)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.