วิธีคัดลอกไฟล์ที่เร็วที่สุด


15

หากเราประสบความสำเร็จในการสร้างบนเซิร์ฟเวอร์การสร้างของเรา (CCNET) ไฟล์เว็บไซต์ ASP.NET ทั้งหมดจะถูกคัดลอกไปยังไดเรกทอรีเสมือน (% output_dir%) เพื่อให้ผู้ที่ไม่ใช่นักพัฒนาสามารถดู / ทดสอบเวอร์ชันล่าสุดของเว็บไซต์ ในตอนท้ายของการสร้างไฟล์ค้างคาวต่อไปนี้จะถูกดำเนินการ

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

ปัญหาคือฉันพบว่าการคัดลอกช้าและสงสัยว่ามีคำสั่ง copy ใด ๆ ใน Windows 2008 ที่เร็วกว่า xcopy หรือไม่ แหล่งที่มาและปลายทางอยู่ในไดรฟ์เดียวกัน ด้านล่างนี้เป็นข้อโต้แย้งที่เราใช้เมื่อคัดลอก

/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

คำตอบ:


21

จากมุมมองประสิทธิภาพเท่านั้น , xcopyหรือrobocopyจะให้ผลที่คล้ายกัน ฉันวิ่งผ่านการทดสอบสองสามอย่างในกล่อง Windows Vista 64-bit SP2 เพื่อทำการเปรียบเทียบ ทำสำเนาทั้งหมดระหว่างดิสก์ภายใน 7200 RPM Sata II และไดรฟ์ USB 2.0 ภายนอกหรือบนไดรฟ์ภายในเดียวกันตามที่ระบุ ไม่มีการตั้งค่าพิเศษใด ๆ (ทำขึ้นในใจของคุณเองหากสิ่งนั้นเป็นโมฆะ / ตรวจสอบความถูกต้องของการทดสอบ) เพียงเพื่อป้อนคำสั่งลงในไฟล์แบตช์เพื่อดำเนินการ PowerShell ใช้เพื่อบันทึกเวลาเริ่มและหยุด หลังจากผ่านไปสองสามครั้งนี่คือค่าเฉลี่ยจากเครื่องมือที่ฉันเล่นด้วย:

ไฟล์: 732,909,568 ไบต์ (698 MB), ไฟล์ ISO 1 ไฟล์ที่คัดลอกไปยังไดเรกทอรีอื่นบนดิสก์ภายในเดียวกัน

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)  

ไฟล์: 732,909,568 ไบต์ (698 MB), ไฟล์ ISO 1 ไฟล์ที่คัดลอกไปยังดิสก์ USB ภายนอก

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)  

ไฟล์: 45,039,616bytes (42.9MB) 5 ไฟล์สุ่มคัดลอกไปยังดิสก์ usb ภายนอก

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)

ไฟล์ / เส้นทาง: 1,087,180,800 ไบต์ (1.01 GB), ไฟล์ 27 ไฟล์ / 8 ไดเรกทอรีที่คัดลอกไปยังดิสก์ USB ภายนอก

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)

นี่ไม่ใช่การทดสอบที่ละเอียดถี่ถ้วน แต่เพียงแค่โยนสถานการณ์จริงอย่างรวดเร็วในเครื่องมือยอดนิยมบางประเภทในประเภทนี้แสดงให้เห็นว่าการรักษาความปลอดภัยของคุณติดกับ xcopy หรือ Robocopy (จากจุดยืนของประสิทธิภาพเท่านั้น) ตัวเลือก Robocopy /NP(ไม่มีความคืบหน้า) ช่วยให้คุณประหยัดเวลา 0 นั่นไม่ได้หมายความว่าคุณจะไม่ได้รับประโยชน์จากการใช้อย่างอื่นนอกจาก xcopy Robocopy เป็นตัวอย่างที่ดี (จากWikipedia ):

Robocopy มีความโดดเด่นสำหรับความสามารถที่เหนือกว่า
คำสั่งWindows copy และxcopy ในตัวซึ่งรวมถึง:

  • ความสามารถในการทนต่อการขัดข้องของเครือข่ายและการคัดลอกต่อที่เดิมค้างไว้ก่อนหน้านี้ (ไฟล์ที่ไม่สมบูรณ์จะถูกบันทึกด้วยการประทับวันที่ที่สอดคล้องกับ 1980-01-01 และมีบันทึกการกู้คืนเพื่อให้ Robocopy รู้ว่าจะดำเนินการต่อที่ไหน)
  • ความสามารถในการคัดลอกแอตทริบิวต์ข้อมูลเจ้าของกระแสข้อมูลสำรองข้อมูลการตรวจสอบและการประทับเวลาอย่างถูกต้องโดยค่าเริ่มต้นโดยไม่จำเป็นต้องใช้สวิตช์บรรทัดคำสั่งที่มักถูกลืมจำนวนมาก
  • ความสามารถในการคัดลอก NTFS ACLs อย่างถูกต้อง (เมื่อ / จัดให้มี COPYALL) และยืนยันสิทธิ์การสำรองข้อมูล "สิทธิแบ็คอัพ" ของ Windows NT (/ B) เพื่อให้ผู้ดูแลระบบสามารถคัดลอกไดเรกทอรีทั้งหมดรวมถึงไฟล์ที่ถูกปฏิเสธ
  • ความคงอยู่ตามค่าเริ่มต้นพร้อมจำนวนการลองใหม่โดยอัตโนมัติหากไม่สามารถเปิดไฟล์ได้
  • โหมด "มิเรอร์" ซึ่งทำให้แผนผังตรงกันโดยเลือกที่จะลบไฟล์ออกจากปลายทางที่ไม่มีอยู่ในแหล่งที่มาอีกต่อไป
  • ความสามารถในการคัดลอกไฟล์จำนวนมากที่อาจขัดข้องยูทิลิตี้ XCOPY ในตัว
  • ตัวบ่งชี้ความคืบหน้าในบรรทัดคำสั่งที่ปรับปรุงอย่างต่อเนื่อง
  • ความสามารถในการคัดลอกชื่อไฟล์และโฟลเดอร์ที่ยาวเกิน 256 ตัวอักษร - สูงสุด 32,000 ตัวตามทฤษฎี - โดยไม่มีข้อผิดพลาด

5

ฉันมักจะใช้:

robocopy source dest /E /MIR

หรือตัวแปรอื่น ๆ ของพารามิเตอร์ - บางที/NFL /NDL /NS /NC /NPเพื่อให้ตรงกับ "เงียบ"


ครับ / NP เป็นสิ่งจำเป็นสำหรับ robocopies รวดเร็ว
Ivo Looser

เมื่อคุณต้องการสร้างเนื้อหาที่แน่นอนเช่นเดียวกับในแหล่งที่มาซ้ำแล้วซ้ำอีกฉันจะใช้ / MIR หรือ / PURGE จากคำสั่ง Robocopy
Ivo Looser

1

ที่จริงแล้วโดยการกำจัดเครือข่ายคุณ จำกัด การทดสอบของคุณจริงๆ คุณอาจต้องการพิจารณาการใช้เครือข่ายร่วมกันซึ่งเป็นงานของผู้ดูแลระบบจำนวนมาก

นอกจากนี้คุณควรใช้ FTP และข้าม CIFS ไปพร้อมกัน Eseutil.exe เป็นยูทิลิตี้อื่นที่คุณสามารถใช้งานได้ (การใช้ Exchange ที่สามารถใช้ที่อื่นได้พร้อมกับมันเป็นสี่ Dll ที่ขึ้นต่อกัน)

ถ้าอย่างนั้นฉันต้องการเห็นผลลัพธ์ของคุณ


1

ฉันใช้ XCopy เพื่อจุดประสงค์เดียวกัน สิ่งที่ฉันทำก็เพิ่ม NIC อื่นไปยังเซิร์ฟเวอร์นั้นและวางไว้ในซับเน็ตแยกต่างหาก จากนั้นทำการเชื่อมต่อโดยตรงไปยังเซิร์ฟเวอร์ที่ฉันกำลังถ่ายโอนไฟล์จาก ด้วยวิธีนี้เครื่องทั้งสองกำลังเคลื่อนย้ายข้อมูลที่คัดลอกผ่านเครือข่ายย่อยเดียวและผู้ใช้ยังคงสามารถเข้าถึงผ่านทางนิคที่สองซึ่งเชื่อมต่อโดยตรงกับ LAN


1

คุณบอกว่าแหล่งที่มาและปลายทางอยู่ในไดรฟ์เดียวกัน แต่พวกเขาทั้งสองอยู่ในการสร้างเซิร์ฟเวอร์?

หากเซิร์ฟเวอร์การสร้างเป็นที่ตั้งของแหล่งที่มาและปลายทางให้พิจารณาย้ายโฟลเดอร์หนึ่งหรืออีกโฟลเดอร์หนึ่งไปยังไดรฟ์อื่นอาจอยู่ในคอนโทรลเลอร์อื่น

หากบิลด์เซิร์ฟเวอร์ไม่ใช่ตำแหน่งของต้นทางและปลายทาง (บิลด์บิลด์ไม่ได้อยู่บนเซิร์ฟเวอร์ที่ถูกสร้างขึ้น) ให้พิจารณาสร้างงานบนเซิร์ฟเวอร์ที่มีโฟลเดอร์ต้นทางและปลายทางอยู่ จากนั้นก็เริ่มภารกิจนี้จากระยะไกล


1

ฉันต้องทำหลายชุดในช่วงหลายปีที่ผ่านมา เรามีเครื่อง Windows Server 2008 R2 หนึ่งเครื่องที่มีไดเร็กตอรี่เดียวที่มีอิมเมจมากกว่า 12M อยู่ภายใน (ประมาณ 400GB)

แน่นอนฉันต้องการไม่เป็นเช่นไดเรกทอรีใหญ่ แต่:

  • XCOPY จัดการสำเนาของโฟลเดอร์ขนาดใหญ่ แต่ล้มเหลวเมื่อพยายามดำเนินการต่อจากไดเรกทอรีขนาดใหญ่
  • ROBOCOPY จัดการกับการคัดลอกโดยไม่มีปัญหาและเป็นประสบการณ์ที่ดีกว่าเมื่อคัดลอกซึ่งมีตัวบ่งชี้ความคืบหน้าที่ดีกว่า
  • XCOPY ในไดเรกทอรีขนาดเล็กเร็วขึ้น

อย่างไรก็ตามฉันแค่คิดว่าฉันจะแบ่งปันประสบการณ์ของฉันกับพวกเขาเพราะลักษณะผิดปกติของไดเรกทอรีขนาดใหญ่ของฉันจริงๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.