900.000 dosyayı nasıl hızlı bir şekilde kopyalarım?


9

Ben yaklaşık 30 gigabayt toplam 900.000 küçük dosyaları içeren bazı verileri bir Windows bilgisayara kopyalamak gerekiyor. Ancak, bir buçuk saatten az bir sürede kopyalanabilmesi ve kurulabilmesi gerekir ve çoğunlukla çılgın miktarda dosya nedeniyle bir USB sabit sürücüyü kopyalamak 5+ saat sürebilir. Bununla bir tür blok kopyalama yapmak gibi daha iyi / daha hızlı bir yol var mı? Teşekkürler


8
Bu , SSD olmayan tek bir diskten dosya tabanlı herhangi bir kopya için çok agresif bir hedef olacaktır. Sadece tüm dosyaları numaralandırmak ve birçok dosya için dosya sistemi girişleri ve meta verilerle uğraşmak önemli miktarda zaman alır.
afrazier

5
Sabit sürücüyü çıkarıp hedefe yerleştirebiliyor musunuz? bu, anakart arka panelinden aktarılan en yüksek hız olacaktır.
iTom


Bu soruyu blogda görmek ister misiniz? Cevaplama veya oylanarak Yardım Meta .
Tamara Wijsman

Yanıtlar:


7

Çok sayıda dosyayla, başa çıkmak için daha az dosyaya sahip olmak için tar arşivi oluşturmak en iyisidir. USB 2.0 harici sabit sürücü kullanıyorsanız, USB 3.0, eSATA veya hızlı bir yerel ağ kullanmalısınız.

Kaynak işletim sisteminiz nedir? Her iki işletim sisteminiz de Linux olsaydı, dosyaları tar, gzip ve ssh aracılığıyla hedef makineye bağlayabilirsiniz. Windows için de bu tür bir işlevsellik elde etmek için Windows'a cygwin yükleyebilirsiniz.

Güncelleme:
" SCP Hızlarını artırmak için Tar ve SSH kullanma " gönderisi, tar içeriğini ssh üzerinden göndermek için gereken komutları açıklar.


tar yine tüm dosyaları tek tek okuyacaktır.
Tomas Andrle

Evet, ancak bunu yalnızca bir kez yaparsınız ve scp gibi diğer komutlar tek tek dosyalarla uğraşarak ertelenmez. Dosyalar hedef makinedeki tar arşivinde tutulabiliyorsa, birçok dosya yerine tek bir dosya yazmak için zamandan tasarruf edersiniz.
dabest1

USB bağlantısının darboğaz olduğunu varsayıyorum. Yani @arcyqwerty'nin önerdiği gibi sürücünün ham bir görüntüsünü almak benim için en iyi çözüm gibi görünüyor. Yine de bazı gerçek sonuçlar görmek isterdim, belki tamamen yanılıyorum!
Tomas Andrle

1
@TomA - Deneyimlerime göre çok sayıda küçük dosyayla uğraşırken , sabit disk darboğaz. Okunan her dosya, Ayırma bitmap'ine bir kafa araması ve ardından gerçek dosya içeriğine başka bir kafa araması gerektirir. Sonuç olarak, sabit disk zamanının çoğunu zaman ayırmaya harcar ve aslında dosyaları okumak için çok az zaman harcar.
Sahte Ad

2
Örnek olarak, 1K dosyaları ile, gigabit lan üzerinde ~ 1-5 MBps olsun. Büyük dosyalarla (her biri gigabayt) ~ 80-90 MBps alırım. Her şey sıralı okumalarla ilgilidir.
Sahte Ad

8

Sabit sürücü USB arabiriminden ve SATA / ATA'ya çıkarılabilirse, hedef bilgisayara takarım. Diğerlerinin belirttiği gibi, çok daha yüksek aktarım hızları elde edersiniz. Kopyalamak için, Windows'da olduğunuzu varsayarsak, basit bir ROBOCOPY yaparım. Diğer alternatifler olsa da, gerçekten umabildiğiniz kadar hızlı.

ROBOCOPY /E /B /MT 'source' 'destination'

Tüm bu dosyaları sıkıştırmaktan kaçınmaya çalışacağım, sıkıştırmak ve taşımak için zamanın sadece dosyaları hareket ettirmek için iyi bir şans var.

* Robocopy için / MT seçeneği eklendi. Çok iş parçacıklı bir ortamda olduğunuzda aktarımları büyük ölçüde hızlandırabilir.


Will /MTyerel tek bir disk transferlerine yardımcı veya masif diski dayak neden? Büyük paylaşımları sunucular arasında kopyalamak için yaygındır, ancak genellikle ağ üzerinden gitme ve RAID dizilerinden gelişmiş IOPS nedeniyle ek gecikme süreleri vardır.
afrazier

Gerçekten bu konuda çok fazla yorum yapamam. Her gece tüm VS projelerimi yedeklemek için robocopy kullanıyorum, ancak sadece 10GB'lık bir değer. Zaten var olan dosyalar kopyalanmadığından yalnızca birkaç dakikanızı alır. Bu Robocopy kriterlerini birkaç ay önce buldum
Lee Harrison

Deneyimlerime göre, sürücü kasanızdaki USB - SATA adaptörü yerel komut kuyruğunu destekliyorsa, / MT anahtarından önemli bir performans artışı elde ederim.
longneck

6

Tüm klasörün / sürücünün resmini çekmeyi deneyebilirsiniz

Linux sistemlerinde dd, dosya sisteminin ham bir kopyasını alıp tek bir büyük dosya olarak kopyalayabilirsiniz.

Görüntüyü Windows'a ayıklamak için cygwin veya ddgörüntüleri işleyebilen bir program yüklemeniz gerekebilir .


Bilet bu.
Tomas Andrle

3

Diski, ayarladığınız bilgisayarda kaynak dosyaların bulunduğu yere kurun ve diski diske aktarın. USB'yi unutun. Kablo üzerinden aktarma bile (makineleri birbirine bağlayan ağ) bile USB'den daha hızlı olacaktır (usb 2.0 ve 1Gbps NIC varsayarsak). Bu yinelenen bir etkinlikse, bunun yerine çoğaltmaya bakın.


3

Kullanım rsyncile zseçeneğiyle.

-z,         --compress              compress file data during the transfer
            --compress-level=NUM    explicitly set compression level
            --skip-compress=LIST    skip compressing files with suffix in LIST

Bu, ağ üzerinden aktarım hızını artıracaktır. Yani büyük ihtimalle sizin durumunuzda yararlı değil.

Biraz daha okuduktan sonra, bir yerel sabit diskten diğerine veri kopyalarken '-z' bayrağını kullanmamalıyız, bu yükü arttırıyor. @FakeName adlı kullanıcıya yorum yaptığınız için teşekkür ederiz.


1
rsync yerel aktarımlar için sıkıştırmaz (veya bir LAN üzerinden inanıyorum). Ayrıca, bunun hiçbir yararı olmayacaktır, çünkü asıl mesele dosyaları okumak için harcanan zamandır , onları tel üzerinden göndermez (okunan her dosya en az iki arama işlemi gerçekleştireceğinden).
Sahte Ad

@FakeName +1 haklısın, biraz okuduktan sonra istediğini anladım. Cevabımı güncelledim.
Sachin Divekar

1

Sabit diskinizin sınırlamalarına hızla yaklaşıyorsunuz. Aslında, mevcut emtia sürücüleri ile, aktarım sürenizi dosya başına kopyalama işlemiyle karşılamak imkansızdır.

Her dosya için 1 HD arama ve arama süresi 7 ms'dir (biraz idealize edilir, gerçekçi olarak, birim bitmap ram'da önbelleğe alınmadıkça her dosya iki arama gerektirir ), en iyi şekilde ~ 142 dosya / sn ( \ $ \ frac {1000} {7} = 142.8 ... \ $).

Dosya başına ~ 33K olan OP özellikleriyle (30 GB, 900.000 dosya) (\ $ \ frac {30,000,000k} {900,000} = ~ 33,3 ... \ $. 33KB * 142 = 4,68 MBps.

En az 5 Mbps 30 GB transfer zamanı, yaklaşık 1 saat, 40 dakika (\ $ \ frac {30,000} {5} = = 6.000 \ $ saniye. \ $ \ Frac {6000} {60} = 100 \ $ olduğu dakika veya 1:40 saat)

Bu nedenle, ~ 5 MBPS'den daha iyi bir hıza ulaşmak imkansızdır ve bu ideal bir sürücüdür (ve daha az arama işlemi. Bu, dosya başına bir arama içindir. Gerçekçi olarak, iki olurdu). Sen sınırlıdır tamamen disk performansı ile.


Performansı bundan daha iyi almanın tek yolu, tüm dosya sistemini ve bölümü sırayla kopyalamaktır. ddbunu linux üzerinde yapabilir.

Ne yapmaya çalışıyorsun?


TeX başkası için çalışıyor mu? Benim için render etmiyor gibi görünüyor.
Sahte İsim

0

Dosyaları yalnızca bir dosyada arşivlemek için 7zip'i deneyin. Mümkünse, dizüstü bilgisayara geçici bağlantı ile WLAN kullanın.


1
ya da daha iyisi, doğrudan bir ethernet bağlantısı, tercihen gig-e
Journeyman Geek

0

@Arcyqwery'nin cevabı ile ilgili olarak, sıkıştırabilir ve aynı anda büyük bir dosyaya dönüştürebilirsiniz. Bu işlemi biraz hızlandıracaktır.

Genellikle varsayılan Windows kopyalama performansından daha hızlı olduğu için TeraCopy gibi bir program kullanmak da faydalı olabilir . Yine de kontrol etmek için durumunuzda benzer durumlarla test etmelisiniz.


0

Benzer bir vakam vardı. Anti-virüs'ü kapattım, kopyalama hızı 3MB / s'den 12MB / s'ye değiştirildi.

resim açıklamasını buraya girin

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.