ฉันจะคัดลอกไฟล์ 900,000 ไฟล์ได้อย่างรวดเร็วได้อย่างไร


9

ฉันต้องการคัดลอกข้อมูลที่มีไฟล์เล็ก ๆ จำนวน 900,000 ไฟล์รวมประมาณ 30 กิกะไบต์ไปยังคอมพิวเตอร์ที่ใช้ windows อย่างไรก็ตามต้องสามารถคัดลอกและตั้งค่าได้ภายในหนึ่งชั่วโมงครึ่งและอาจต้องใช้เวลา 5+ ชั่วโมงในการคัดลอกฮาร์ดไดรฟ์ USB ส่วนใหญ่เนื่องจากไฟล์จำนวนมาก มีวิธีที่ดีกว่า / เร็วกว่าในการจัดการกับสิ่งนี้เช่นการคัดลอกบล็อกบางประเภท? ขอบคุณ


8
นั่นจะเป็นเป้าหมายที่ก้าวร้าวมากสำหรับการคัดลอกไฟล์ใด ๆ จากดิสก์เดี่ยวที่ไม่ใช่ SSD เพียงแค่แจกแจงไฟล์ทั้งหมดและจัดการกับรายการระบบไฟล์และข้อมูลเมตาสำหรับไฟล์จำนวนมากนั้นใช้เวลานานพอสมควร
afrazier

5
คุณสามารถลบฮาร์ดไดรฟ์และวางในปลายทางได้หรือไม่ นี่จะเป็นความเร็วที่เร็วที่สุดถ่ายโอนไปที่แผงด้านหลังของเมนบอร์ด
iTom


ต้องการที่จะเห็นคำถามนี้ blogged? ช่วยเหลือโดยการตอบหรือการลงคะแนนเสียงที่Meta
Tamara Wijsman

คำตอบ:


7

ด้วยไฟล์จำนวนมากวิธีที่ดีที่สุดคือสร้าง tar ไฟล์เก็บถาวรเพื่อให้คุณมีไฟล์น้อยลงที่จะจัดการ หากคุณใช้ฮาร์ดไดรฟ์ภายนอก USB 2.0 คุณควรดูโดยใช้ USB 3.0, eSATA หรือใช้เครือข่ายท้องถิ่นที่รวดเร็ว

OS ต้นทางของคุณคืออะไร หากทั้งสองระบบปฏิบัติการของคุณเป็น Linux คุณสามารถไพพ์ไฟล์ผ่าน tar, gzip และ ssh ไปยังเครื่องเป้าหมาย คุณสามารถติดตั้ง cygwin บน Windows เพื่อรับฟังก์ชั่นประเภทนี้สำหรับ Windows ได้เช่นกัน

อัปเดต:
" การใช้ Tar และ SSH เพื่อปรับปรุง SCP Speeds " โพสต์อธิบายคำสั่งที่จำเป็นในการส่งเนื้อหา tar ไปยัง ssh


tar จะยังคงอ่านไฟล์ทั้งหมดทีละไฟล์
Tomas Andrle

ใช่ แต่คุณจะทำเพียงครั้งเดียวและคำสั่งอื่น ๆ เช่น scp จะไม่ล่าช้าโดยจัดการกับไฟล์แต่ละไฟล์ หากไฟล์สามารถเก็บไว้ในไฟล์เก็บถาวร tar บนเครื่องเป้าหมายได้คุณจะประหยัดเวลาในการเขียนไฟล์หนึ่งไฟล์แทนไฟล์จำนวนมาก
dabest1

ฉันคิดว่าการเชื่อมต่อ USB เป็นคอขวด ดังนั้นการใช้ภาพอิมเมจของไดรฟ์ที่ @arcyqwerty แนะนำให้ดูเหมือนว่าเป็นทางออกที่ดีที่สุดสำหรับฉัน ฉันอยากรู้อยากเห็นผลลัพธ์ที่แท้จริงบางอย่างฉันอาจผิดอย่างสมบูรณ์!
Tomas Andrle

1
@TOMA - จากประสบการณ์ของฉันเมื่อต้องรับมือกับไฟล์ขนาดเล็กจำนวนมากฮาร์ดไดรฟ์คือคอขวด การอ่านแต่ละไฟล์ต้องใช้การค้นหาแบบส่วนหัวไปยังบิตแมปการปันส่วนและจากนั้นการค้นหาแบบหัวไปยังเนื้อหาไฟล์จริง เป็นผลให้ฮาร์ดไดรฟ์ใช้เวลาส่วนใหญ่ในการค้นหาและใช้เวลาน้อยมากในการอ่านไฟล์
ชื่อปลอม

2
ตัวอย่างเช่นด้วยไฟล์ 1K ฉันได้รับ ~ 1-5 เมกะบิตต่อวินาทีผ่านทางกิกะบิต lan ของฉัน ด้วยไฟล์ขนาดใหญ่ (แต่ละกิกะไบต์) ฉันได้รับ ~ 80-90 MBps มันคือทั้งหมดที่เกี่ยวกับการอ่านตามลำดับ
ชื่อปลอม

8

หากสามารถลบฮาร์ดไดรฟ์ออกจากอินเทอร์เฟซ USB และบน SATA / ATA ฉันจะติดตั้งในคอมพิวเตอร์ปลายทาง คุณจะได้รับความเร็วในการถ่ายโอนที่เร็วกว่ามากเท่าที่คนอื่นสังเกต สำหรับการทำสำเนาสมมติว่าคุณใช้ Windows ฉันจะทำ ROBOCOPY แบบง่าย ๆ มันเร็วพอ ๆ กับที่คุณจะหวังจริงๆแม้ว่าจะมีทางเลือกอื่น

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

ฉันพยายามหลีกเลี่ยงการบีบอัดไฟล์ทั้งหมดเหล่านี้ แต่มีโอกาสที่ดีที่จะบีบอัดและย้ายไฟล์มีมากกว่าการย้ายไฟล์

* เพิ่มตัวเลือก / MT สำหรับ robocopy มันสามารถเพิ่มความเร็วในการถ่ายโอนอย่างมากเมื่อคุณอยู่ในสภาพแวดล้อมแบบมัลติเธรด


จะ/MTช่วยในการถ่ายโอนดิสก์ในเครื่องเดียวหรือทำให้ดิสก์ใหญ่มาก? เป็นเรื่องปกติสำหรับการคัดลอกการแชร์ขนาดใหญ่ระหว่างเซิร์ฟเวอร์ แต่บ่อยครั้งที่พวกเขามีเวลาแฝงที่เพิ่มขึ้นเนื่องจากการเข้าใช้เครือข่ายและการปรับปรุง IOPS จากอาร์เรย์ RAID
afrazier

ฉันไม่สามารถแสดงความคิดเห็นอย่างหนักเกินไปในแง่มุมนี้ ฉันใช้ robocopy เพื่อสำรองข้อมูลโครงการ VS ของฉันทุกคืนแม้ว่าจะมีมูลค่าเพียงประมาณ 10GB เท่านั้น ใช้เวลาสักครู่เนื่องจากไฟล์ที่มีอยู่แล้วจะไม่ถูกคัดลอก ฉันพบการวัดประสิทธิภาพ Robocopy เหล่านี้เมื่อไม่กี่เดือนที่ผ่านมา: demartek.com/Reports_Free/…
Lee Harrison

จากประสบการณ์ของฉันถ้าอะแดปเตอร์ USB เป็น SATA ในกล่องหุ้มไดรฟ์ของคุณรองรับการจัดคิวคำสั่งดั้งเดิมฉันจะได้รับประสิทธิภาพที่เพิ่มขึ้นอย่างมากจากสวิตช์ / MT
longneck

6

คุณสามารถลองถ่ายภาพทั้งโฟลเดอร์ / ไดรฟ์

บนระบบ Linux คุณสามารถใช้ddเพื่อรับสำเนาดิบของระบบไฟล์และคัดลอกเป็นไฟล์ขนาดใหญ่เดียว

ในการแตกรูปภาพลงบน Windows คุณอาจต้องติดตั้ง cygwin หรือโปรแกรมที่สามารถประมวลผลddรูปภาพได้


นั่นคือตั๋ว
Tomas Andrle

3

ติดตั้งดิสก์ที่มีไฟล์ต้นฉบับอยู่ในคอมพิวเตอร์ที่คุณตั้งค่าและถ่ายโอนดิสก์ไปยังดิสก์ ลืม USB แม้การโอนผ่านสาย (เครือข่ายเครื่องเข้าด้วยกัน) จะเร็วกว่า USB (สมมติว่า usb 2.0 และ 1Gbps NIC) หากนี่เป็นเหตุการณ์ที่เกิดซ้ำให้ดูที่การจำลองแบบแทน


3

ใช้rsyncกับzตัวเลือก

-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

ซึ่งจะเป็นการเพิ่มความเร็วในการถ่ายโอนผ่านเครือข่าย ดังนั้นส่วนใหญ่อาจไม่มีประโยชน์ในกรณีของคุณ

หลังจากการอ่านเพิ่มเติมฉันรู้ว่าเราไม่ควรใช้การตั้งค่าสถานะ '-z' เมื่อคัดลอกข้อมูลจากฮาร์ดไดรฟ์ภายในเครื่องหนึ่งไปยังอีกเครื่องหนึ่งมันเพิ่มโอเวอร์เฮด ขอบคุณที่แสดงความคิดเห็นจาก @FakeName


1
rsync ไม่บีบอัดสำหรับการถ่ายโอนในท้องถิ่น (หรือผ่าน LAN ฉันเชื่อว่า) นอกจากนี้สิ่งนี้จะไม่มีประโยชน์เนื่องจากปัญหาที่แท้จริงคือเวลาที่ใช้ในการอ่านไฟล์ไม่ส่งผ่านสาย (เนื่องจากแต่ละไฟล์ที่อ่านจะใช้เวลาสองการค้นหาขั้นต่ำ)
ชื่อปลอม

@FakeName +1 คุณถูกต้องหลังจากอ่านเสร็จฉันได้คะแนนของคุณแล้ว ฉันได้อัพเดตคำตอบแล้ว
Sachin Divekar

1

คุณกำลังเข้าใกล้ข้อ จำกัด ของฮาร์ดไดรฟ์ของคุณอย่างรวดเร็ว อันที่จริงแล้วด้วยไดรฟ์ชุดสินค้าในปัจจุบันเป็นไปไม่ได้ที่จะเพิ่มความเร็วการถ่ายโอนของคุณด้วยการดำเนินการคัดลอกต่อไฟล์

สมมติว่าแต่ละไฟล์ต้องการ 1 HD การค้นหาและเวลาในการค้นหาคือ 7 มิลลิวินาที (ซึ่งค่อนข้างเงียบสงบและแนบเนียนแต่ละไฟล์จะต้องมีสองค้นหาครั้งยกเว้นว่าบิตแมปปริมาณการแคชใน RAM) ที่ดีที่สุดคุณจะจัดการ ~ 142 ไฟล์ / วินาที ( \ $ \ frac {1000} {7} = 142.8 ... \ $)

ด้วยรายละเอียด OP (30 GB, 900,000 ไฟล์) ที่ ~ 33K ต่อไฟล์ (\ $ \ frac {30,000,000k} {900,000} = ~ 33.3 ... \ $. 33KB * 142 = 4.68 MBps

ขั้นต่ำเวลาในการถ่ายโอน 30 GB ที่ 5 เมกะบิตต่อวินาทีเป็น ~ 1 ชั่วโมง 40 นาที (\ $ \ frac {30,000} {5} = = 6,000 \ $ วินาที. \ $ \ frac {6,000} {60} = 100 \ $ นาทีหรือ 1:40 ชั่วโมง)

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


วิธีเดียวที่จะทำให้ประสิทธิภาพดีขึ้นดังนั้นนี่คือการคัดลอกทั้งระบบไฟล์และพาร์ติชั่นตามลำดับ ddสามารถทำได้บน linux

คุณพยายามจะทำอะไร?


TeX ทำงานเพื่อคนอื่นหรือไม่? ดูเหมือนว่าฉันจะไม่แสดงผลให้ฉัน
ชื่อปลอม

0

ลอง 7zip เพื่อเก็บไฟล์ไว้ในไฟล์เดียวเท่านั้น ถ้าเป็นไปได้ให้ใช้ WLAN ด้วยการเชื่อมต่อแบบเฉพาะกิจกับโน้ตบุ๊ก


1
หรือดีกว่านั้นการเชื่อมต่ออีเธอร์เน็ตโดยตรงโดยเฉพาะอย่างยิ่ง gig-e
Journeyman Geek

0

เกี่ยวข้องกับคำตอบของ @arcyqwery คุณอาจบีบอัดได้และแปลงเป็นไฟล์ขนาดใหญ่หนึ่งไฟล์พร้อมกัน นี้จะเพิ่มความเร็วในกระบวนการบางอย่าง

มันอาจจะคุ้มค่าที่จะใช้โปรแกรมเช่นTeraCopyเนื่องจากโดยปกติแล้วจะเร็วกว่าประสิทธิภาพการคัดลอก windows เริ่มต้น คุณควรทดสอบกับสถานการณ์ที่คล้ายคลึงกันในกรณีของคุณเพื่อตรวจสอบ


0

ฉันมีกรณีที่คล้ายกัน ฉันปิด Anti-virus ความเร็วการคัดลอกเปลี่ยนจาก 3MB / s เป็น 12MB / s

ป้อนคำอธิบายรูปภาพที่นี่

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