รวบรวมข้อมูลจากหลาย ๆ แหล่งเข้าด้วยกัน มีไม่กี่ตัวเลือก
สรุปคือมีแต่ สั่งการ ขนาน คุณอาจได้รับสิ่งที่คุณต้องการดูด้านล่าง
หมายเหตุสำคัญ:
- ฉันได้ทำการทดสอบกับ
ซีพี สำหรับการคัดลอกคุณควรพิจารณาความเร็วที่เพิ่มขึ้น (หรือลดลง!) ที่ได้รับด้วย รีซิงค์ เทียบกับ ซีพี หรือคำสั่งทางเลือกอื่นๆ ร่วมด้วย ขนาน.
- ฉันได้ทดสอบการคัดลอกไฟล์เดียวเท่านั้น ผลลัพธ์อาจเปลี่ยนแปลงหากคัดลอกไฟล์จำนวนมาก (เช่น รวมไฟล์ขนาดใหญ่บางไฟล์เข้ากับไฟล์ขนาดเล็กและไดเร็กทอรีย่อยอื่นๆ ตามที่คุณต้องการ)
เวลา <ตัวเลือก #N คัดลอกไปยังเป้าหมายเดียว>
เวลา <ตัวเลือก #N คัดลอกไปยังสองเป้าหมาย>
เพื่อรับการเปรียบเทียบด้วยไฟล์ขนาด 1.2Gb
นอกจากนี้ ในบางกรณี ฉันทดสอบคำสั่งเดียวกันสองหรือสามครั้ง เพื่อประเมินการกระจายในผลลัพธ์
ฉันไม่ได้คำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐาน แต่ผลลัพธ์นั้นชัดเจน
นี่คือสิ่งที่ฉันได้รับภายใต้เงื่อนไขการทดสอบที่ระบุข้างต้นพร้อมความคิดเห็นสั้นๆ
ฉันเชื่อมโยงผลลัพธ์ของการทดสอบหลายรายการเข้าด้วยกันในแถวเดียว เมื่อใดก็ตามที่มี
เดอะ กรณีฐาน:
$ เวลา cp -p source/file1 target1/
จริง 0m0,846s 0m0,680s 0m0,659s
ผู้ใช้ 0m0,000s 0m0,001s 0m0,016s
ซิส 0m0,777s 0m0,662s 0m0,643s
เดอะ ตัวเลือกการคัดลอก:
ตัวเลือก ขนาน
$ ขนาน cp -p source/file1 ::: target1/
จริง 0m0,745s 0m0,740s
ผู้ใช้ 0m0,121s 0m0,108s
ระบบ 0m0,609s 0m0,619s
$ ขนาน cp -p source/file1 ::: target1/ target2/
จริง 0m0,794s 0m0,860s
ผู้ใช้ 0m0,116s 0m0,134s
ระบบ 0m1,300s 0m1,380s
ตัวเลือก ที (ผนวก > /dev/null เพื่อหลีกเลี่ยงการส่งออกไปที่ แย่)
$ tee target1/file1 < source/file1 > /dev/null
จริง 0m0,874s 0m1,040s 0m1,028s
ผู้ใช้ 0m0,160s 0m0,172s 0m0,137s
ซิส 0m0,714s 0m0,868s 0m0,887s
$ ที target1/file1 target2/file1 < source/file1 > /dev/null
จริง 0m1,802s 0m1,680s 0m1,833s
ผู้ใช้ 0m0,136s 0m0,212s 0m0,197s
ระบบ 0m1,642s 0m1,468s 0m1,619s
คัดลอกไปยังสอง เป้าs ประมาณสองเท่าของเวลาหนึ่ง เป้าซึ่งใหญ่กว่าเวลาเล็กน้อยสำหรับ กรณีฐาน.
ตัวเลือก xargs
$ echo target1 | xargs -n 1 cp -p ซอร์ส/ไฟล์1
0m0,666s จริง
ผู้ใช้ 0m0,021s
sys 0m0,646s
$ echo target1 target2 | xargs -n 1 cp -p ซอร์ส/ไฟล์1
0m1,197sจริง
ผู้ใช้ 0m0,018s
ระบบ 0m1,173s
คัดลอกไปยังสอง เป้าs ประมาณสองเท่าของเวลาหนึ่ง เป้าซึ่งคล้ายกับเวลาของการ กรณีฐาน.
ตัวเลือก หา
$ ค้นหา target1 -exec cp -p source/file1 {} \;
0m2,167s จริง
ผู้ใช้ 0m0,017s
ระบบ 0m1,627s
$ ค้นหา target1 target2 -exec cp -p source/file1 {} \;
จริง 0m3,905s
ผู้ใช้ 0m0,020s
ระบบ 0m3,185s
คัดลอกไปยังสอง เป้าs ประมาณสองเท่าของเวลาหนึ่ง เป้าซึ่งมีขนาดใหญ่กว่าเวลาสำหรับ กรณีฐาน...ผู้แพ้ชัดๆ.
แหล่งที่มาของ "การคัดลอกหลายรายการ":
- https://www.cyberciti.biz/faq/linux-unix-copy-a-file-to-multiple-directories-using-cp-command/
- วิธีคัดลอกไฟล์ไปยังหลาย ๆ โฟลเดอร์โดยใช้บรรทัดคำสั่ง
- https://stackoverflow.com/questions/195655/how-to-copy-a-file-to-multiple-directories-using-the-gnu-cp-command
แหล่งที่มาสำหรับประสิทธิภาพ ซีพี เทียบกับ รีซิงค์:
- https://unix.stackexchange.com/questions/91382/rsync-is-very-slow-factor-8-to-10-compared-to-cp-on-copying-files-from-nfs-sha
- https://lwn.net/Articles/400489/
- https://superuser.com/questions/1170636/why-is-there-a-write-speed-difference-between-dd-cp-rsync-and-macos-finder-to
- อะไรคือความแตกต่างระหว่าง `cp ` และ `rsync `?