Metode tercepat menyalin file

15

Jika kami memiliki build yang berhasil di server build kami (CCNET) semua file situs web ASP.NET disalin ke direktori virtual (% output_dir%) sehingga non-pengembang dapat melihat / menguji versi terbaru situs web. Pada akhir pembuatan file bat berikut dijalankan.

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

Masalahnya adalah saya menemukan penyalinan lambat dan bertanya-tanya apakah ada perintah salin yang tersedia di Windows 2008 yang lebih cepat daripada xcopy? Sumber dan tujuan berada pada drive yang sama. Di bawah ini adalah argumen yang kami gunakan saat menyalin.

/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
dmcgiv
sumber

Jawaban:

21

Dari sudut pandang kinerja saja , xcopy atau robocopy akan memberi Anda hasil yang serupa. Saya berlari melalui beberapa tes pada kotak Windows Vista 64-bit SP2 untuk melakukan perbandingan. Semua salinan dilakukan antara disk 7200 RPM Sata II internal dan drive USB 2.0 eksternal atau pada drive internal yang sama di mana ditunjukkan. Tidak ada pengaturan khusus yang dilakukan (putuskan sendiri jika itu membatalkan / memvalidasi tes), hanya untuk memasukkan perintah ke dalam file batch untuk dieksekusi. PowerShell digunakan untuk menangkap waktu mulai dan berhenti. Setelah beberapa operan di sini adalah rata-rata dari alat yang saya mainkan:

File: 732.909.568 byte (698 MB), 1 file ISO disalin ke direktori berbeda pada disk internal yang sama.

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)  

File: 732.909.568 byte (698 MB), 1 file ISO disalin ke disk USB eksternal.

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)  

File: 45.039.616bytes (42.9MB) 5 file acak disalin ke disk usb eksternal

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)

File / directoies: 1.087.180.800 byte (1,01 GB), 27 file / 8 direktori disalin ke disk USB eksternal.

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)

Ini sama sekali bukan tes yang lengkap, tetapi hanya melempar skenario dunia nyata cepat di beberapa alat yang lebih populer di genre ini menunjukkan bahwa Anda cukup aman menempel dengan baik xcopy atau Robocopy (dari sudut pandang kinerja saja). Juga opsi Robocopy /NP(Tanpa Kemajuan) menghemat waktu Anda 0. Itu tidak berarti Anda tidak dapat mengambil manfaat dari menggunakan sesuatu selain xcopy. Robocopy adalah contoh yang bagus (dari Wikipedia ):

Robocopy terkenal karena kemampuannya di atas dan di luar
perintah copy dan xcopy Windows bawaan, termasuk yang berikut:

  • Kemampuan untuk mentoleransi pemadaman jaringan dan melanjutkan penyalinan di tempat yang sebelumnya ditinggalkan (file tidak lengkap dicatat dengan cap tanggal yang sesuai dengan 1980-01-01 dan berisi catatan pemulihan sehingga Robocopy tahu dari mana harus melanjutkan).
  • Kemampuan untuk menyalin dengan benar atribut, informasi pemilik, aliran data alternatif, informasi audit, dan cap waktu secara default, tanpa perlu banyak saklar baris perintah yang sering dilupakan.
  • Kemampuan untuk menyalin dengan benar NTFS ACL, (ketika / COPYALL disediakan), dan untuk menyatakan "hak cadangan" Windows NT (/ B) sehingga seorang administrator dapat menyalin seluruh direktori, termasuk file yang tidak dapat dibaca oleh administrator.
  • Kegigihan secara default, dengan jumlah coba ulang otomatis yang dapat diprogram jika file tidak dapat dibuka.
  • Mode "mirror", yang menjaga pohon tetap sinkron dengan secara opsional menghapus file dari tujuan yang tidak lagi ada di sumber.
  • Kemampuan untuk menyalin sejumlah besar file yang jika tidak akan merusak utilitas XCOPY bawaan.
  • Indikator kemajuan pada baris perintah yang terus diperbarui.
  • Kemampuan untuk menyalin nama file dan folder yang panjang melebihi 256 karakter - hingga 32.000 karakter teoritis - tanpa kesalahan.
Shaun Hess
sumber
5

Saya biasanya menggunakan:

robocopy source dest /E /MIR

atau varian lain dari parameter - mungkin /NFL /NDL /NS /NC /NPuntuk mencocokkan "tenang"

Marc Gravell
sumber
ya, / NP adalah suatu keharusan untuk robocopy cepat
Ivo Looser
ketika kamu dapat membuat konten yang sama persis seperti di sumber berulang kali aku akan menggunakan / MIR atau / PURGE dari perintah Robocopy.
Ivo Looser
1

Sebenarnya, dengan menghilangkan Jaringan, Anda benar-benar membatasi pengujian Anda. Anda mungkin ingin mempertimbangkan untuk menggunakan pembagian jaringan, yang akan menjadi sebagian besar pekerjaan admin.

Selain itu, Anda harus menggunakan FTP, dan lewati CIFS sama sekali. Eseutil.exe adalah utilitas lain yang bisa Anda masukkan ke sana. (Utilitas Exchange yang dapat digunakan di tempat lain, bersama dengan empat dll itu tergantung.)

Maka saya ingin melihat hasil Anda.

Len
sumber
1

Saya menggunakan XCopy untuk tujuan yang sama. Apa yang saya juga lakukan adalah menambahkan NIC lain ke server itu dan meletakkannya di subnet terpisah. Kemudian membuat koneksi langsung ke server saya mentransfer file dari. Dengan begitu kedua mesin memindahkan data yang disalin melalui satu subnet dan pengguna masih dapat mengakses melalui nic kedua yang terhubung langsung ke LAN.

Saif Khan
sumber
1

Anda mengatakan sumber dan tujuan berada di drive yang sama, tetapi apakah mereka berdua di server build?

Jika server build adalah lokasi sumber dan tujuan, pertimbangkan untuk memindahkan satu folder atau yang lain ke drive lain, mungkin pada controller lain.

Jika server build bukan lokasi sumber dan tujuan (tetesan build tidak selalu ada di server tempat ia dibangun), pertimbangkan untuk membuat tugas di server tempat folder sumber dan tujuan berada. Maka mulailah tugas itu dari jarak jauh.

Donald Byrd
sumber
1

Saya harus melakukan beberapa salinan selama bertahun-tahun. Kami memiliki satu mesin Windows Server 2008 R2 yang memiliki direktori tunggal dengan lebih dari 12 juta gambar di dalamnya (sekitar 400GB).

Jelas saya lebih suka itu bukan direktori besar TETAPI:

  • XCOPY menangani salinan folder besar, tetapi macet ketika mencoba untuk pindah dari direktori besar.
  • ROBOCOPY menangani salinan tanpa masalah dan merupakan pengalaman yang jauh lebih baik ketika menyalin karena menawarkan indikator kemajuan yang lebih baik.
  • XCOPY pada direktori kecil lebih cepat.

Bagaimanapun, saya hanya berpikir saya akan membagikan pengalaman saya dengan mereka karena sifat tidak biasa dari direktori saya yang sangat besar.

Will Zablocki
sumber