Dosyaları kopyalamanın en hızlı yöntemi


15

Derleme sunucumuzda (CCNET) başarılı bir derlememiz varsa, tüm ASP.NET web sitesi dosyaları sanal dizine (% output_dir%) kopyalanır, böylece geliştirici olmayanlar web sitesinin en son sürümünü görebilir / test edebilir. Derlemenin sonunda aşağıdaki yarasa dosyası yürütülür.

rmdir /s /q "%output_dir%"
mkdir "%output_dir%"
xcopy "%source_dir%*"  "%output_dir%" /e /c /i /q /-y

Sorun ben kopyalama yavaş bulmak ve Windows 2008'de xcopy daha hızlı herhangi bir kopyalama komutları olup olmadığını merak ediyordu? Kaynak ve hedef aynı sürücüde. Kopyalama sırasında kullandığımız argümanlar aşağıdadır.

/e = copies directories and sub directories including empty ones.
/c = continues copying even if there are errors
/i = if destination does not exist destination is directory
/q = don't display filenames
/-y = confirm overwrite

Yanıtlar:


21

Yalnızca performans açısından , xcopy veya robocopy size benzer sonuçlar verecektir. Bazı karşılaştırmalar yapmak için Windows Vista 64 bit SP2 kutusunda birkaç testten geçtim. Tüm kopyalar dahili bir 7200 RPM Sata II diski ile harici bir USB 2.0 sürücüsü arasında veya belirtildiği yerde aynı dahili sürücü üzerinde gerçekleştirildi. Hiçbir özel kurulum yapılmadı (testi geçersiz kılar / doğrularsa kendi kararınızı verin), yalnızca komutu yürütülecek bir toplu iş dosyasına girmek için. PowerShell, başlangıç ​​ve bitiş zamanlarını yakalamak için kullanıldı. Burada birkaç geçişten sonra oynadığım araçların ortalamaları:

Dosya: 732,909,568 bayt (698 MB), 1 ISO dosyası aynı dahili diskteki farklı dizine kopyalandı.

copy      6 secs (ex. copy G:\folder1\* G:\folder2\)
xcopy     6 secs (ex. xcopy G:\folder1 G:\folder2 /I /E /Y /R)
robocopy  6 secs (ex. robocopy G:\folder1\ G:\folder2 /E /NP)
teracopy 28 secs (ex. TeraCopy.exe Copy G:\folder1\ G:\folder2\)
fastcopy 19 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=G:\folder2)  

Dosya: 732,909,568 bayt (698 MB), harici USB diske 1 ISO dosyası kopyalandı.

copy     36 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy    35 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 36 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 36 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 38 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)  

Dosyalar: 45.039.616bytes (42.9MB) Harici usb diskine kopyalanan 5 rastgele dosya

copy      6 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy     5 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy  6 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 12 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy  6 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)

Dosyalar / dizinler: 1.087.180.800 bayt (1.01 GB), harici USB diske kopyalanan 27 dosya / 8 dizin.

copy     *Not included in test
xcopy    57 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 58 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 56 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 60 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)

Bu hiçbir şekilde kapsamlı bir test değildir, ancak bu türdeki daha popüler araçlardan bazılarına hızlı bir gerçek dünya senaryosu atmak, xcopy veya Robocopy ile (sadece performans açısından) oldukça güvenli bir şekilde yapıştığınızı gösterir. Ayrıca Robocopy seçeneği /NP(İlerleme Yok) size 0 zaman kazandırır. Ancak bu, xcopy dışında bir şey kullanamayacağınız anlamına gelmez. Robocopy harika bir örnektir ( Wikipedia'dan ):

Robocopy,
aşağıdakiler de dahil olmak üzere yerleşik Windows kopyalama ve xcopy komutlarının üstündeki ve ötesindeki özellikler için dikkate değerdir :

  • Ağ kesintilerini tolere edebilme ve daha önce kaldığı yerden kopyalamaya devam edebilme (eksik dosyalar 1980-01-01'e karşılık gelen bir tarih damgası ile not edilir ve Robocopy'nin nereye devam edeceğini bilmesi için bir kurtarma kaydı içerir).
  • Sıklıkla unutulan çok sayıda komut satırı anahtarına ihtiyaç duymadan, öznitelikleri, sahip bilgilerini, alternatif veri akışlarını, denetim bilgilerini ve zaman damgalarını varsayılan olarak doğru şekilde kopyalayabilme.
  • NTFS ACL'lerini (/ COPYALL sağlandığında) doğru şekilde kopyalama ve Windows NT "yedekleme hakkı" (/ B) 'nı onaylama, böylece yöneticinin okunabilirliği reddedilen dosyalar da dahil olmak üzere tüm dizini yöneticiye kopyalaması.
  • Bir dosya açılamıyorsa, programlanabilir sayıda otomatik yeniden deneme ile varsayılan olarak kalıcılık.
  • Dosyaları isteğe bağlı olarak artık kaynakta bulunmayan hedefin dışına silerek ağaçların senkronize kalmasını sağlayan bir "ayna" modu.
  • Yerleşik XCOPY yardımcı programını çökertecek çok sayıda dosyayı kopyalayabilme.
  • Komut satırında sürekli güncellenen bir ilerleme göstergesi.
  • 256 karakteri aşan - teorik 32.000 karaktere kadar - uzun dosya ve klasör adlarını hatasız kopyalayabilme.

5

Genellikle kullanıyorum:

robocopy source dest /E /MIR

veya parametrelerin başka bir varyantı - belki /NFL /NDL /NS /NC /NP"sessiz"


Evet, / NP hızlı robocopiler için bir zorunluluktur
Ivo Looser

U whould kaynağı üzerinde tekrar tekrar aynı içeriği oluşturmak zaman Robocopy komut / MIR veya / PURGE kullanmalısınız.
Ivo Looser

1

Aslında, Ağı ortadan kaldırarak testinizi gerçekten kısıtladınız. Yönetici işlerinin büyük bir kısmı olacak bir ağ paylaşımı kullanmayı düşünebilirsiniz.

Ayrıca, FTP kullanmalı ve CIFS'yi tamamen atlamalısınız. Eseutil.exe, oraya atabileceğiniz başka bir yardımcı programdır. (dört bağımlı dll ile birlikte başka bir yerde kullanılabilen bir Exchange util.)

Sonra sonuçlarınızı görmek istiyorum.


1

Aynı amaçla XCopy kullanıyorum. Ne yaptım o sunucuya başka bir NIC eklendi ve ayrı bir alt ağa koydu. Daha sonra dosyaları aktardığım sunucuya doğrudan bağlantı yaptım. Bu şekilde 2 makine kopyalanan verileri bir alt ağ üzerinden hareket ettirir ve kullanıcılar doğrudan LAN'a bağlı olan ikinci nic üzerinden erişebilir.


1

Kaynak ve hedefin aynı sürücüde olduğunu söylüyorsunuz, ancak ikisi de yapı sunucusunda mı?

Yapı sunucusu kaynağın ve hedefin konumuysa, bir klasörü veya diğerini başka bir sürücüye, belki başka bir denetleyicide taşımayı düşünün.

Yapı sunucusu kaynağın ve hedefin konumu değilse (yapı damlaları her zaman kuruldukları sunucuda değildir), sunucuda kaynak ve hedef klasörlerin bulunduğu bir görev oluşturmayı düşünün. O zaman bu görevi uzaktan başlat.


1

Yıllar boyunca birkaç kopya yapmak zorunda kaldım. İçinde 12M'den fazla görüntü içeren (yaklaşık 400GB) tek bir dizine sahip bir Windows Server 2008 R2 makinemiz var.

Açıkçası ben böyle büyük bir dizin olmamasını tercih ederdim AMA:

  • XCOPY, büyük klasörün kopyasını işler, ancak büyük dizinden taşınmaya çalışırken çöker.
  • ROBOCOPY, kopyayı sorunsuz bir şekilde ele alır ve daha iyi ilerleme göstergeleri sunması nedeniyle kopyalarken çok daha hoş bir deneyimdir.
  • Küçük dizinlerde XCOPY daha hızlıdır.

Her neyse, gerçekten büyük dizinimin sıra dışı doğası nedeniyle deneyimlerimi onlarla paylaşacağımı düşündüm.

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.