ไฟล์ใดเร็วกว่าและทำไม: ถ่ายโอนไฟล์ขนาดเล็กหลาย ๆ ไฟล์หรือไฟล์ขนาดใหญ่บางไฟล์?


17

ในไม่ช้าฉันจะมีโฟลเดอร์ที่มีไฟล์นับพันไฟล์แต่ละไฟล์เรียงตามลำดับไม่กี่ KB ฉันจะต้องถ่ายโอนสิ่งเหล่านี้ข้ามเครือข่าย Windows จาก UNC หนึ่งไปยังอีกที่หนึ่ง โดยทั่วไปแล้วจะเร็วกว่าที่จะทำการคัดลอกไฟล์ไปทั่ว en masse หรือจะเร็วกว่าที่จะทำการซิปไฟล์ (เช่นการใช้ 7zip ในโหมดที่เร็วที่สุด) และส่งไฟล์ขนาดใหญ่หนึ่งหรือสองสามตัว? หรือมีการปฏิบัติไม่แตกต่างกันอย่างไร

คำตอบ:


37

มันเร็วกว่าในการถ่ายโอนไฟล์ขนาดใหญ่ไฟล์เดียวแทนที่จะเป็นไฟล์ขนาดเล็กจำนวนมากเนื่องจากมีค่าใช้จ่ายในการเจรจาการถ่ายโอน การเจรจาต่อรองจะทำสำหรับแต่ละไฟล์ดังนั้นการถ่ายโอนไฟล์เดียวที่จะต้องทำครั้งเดียวการถ่ายโอนไฟล์ n หมายความว่ามันจะต้องทำ n ครั้ง

คุณจะประหยัดเวลาได้มากถ้าคุณซิปก่อนการถ่ายโอน


1
en.wikipedia.org/wiki/Slow-startชอบไฟล์ขนาดใหญ่เช่นกัน
ผู้บัญชาการ Keen

4
พิจารณาว่าการบีบอัดจะใช้เวลาเช่นกัน หากข้อมูลของคุณไม่สามารถบีบอัดได้ (เช่น JPEG, ZIPs, JARs และรูปแบบการบีบอัดอื่น ๆ ที่มีอยู่แล้ว) คุณควร TAR พวกเขาเท่านั้น (หรือ ZIP โดยไม่มีการบีบอัด) วิธีนี้จะช่วยประหยัดเวลา CPU สำหรับการพยายามบีบอัดข้อมูลของคุณอย่างไม่มีจุดหมาย
Daniel Schneller

ไฟล์ขนาดเล็กจำนวนมากจะทำให้คุณเจ็บปวดมาก - ระหว่างแพ็คเก็ตเล็ก ๆ และจับมือ SMB สำหรับแต่ละไฟล์การบีบซิปอาจจะช่วยลดเวลาในการคัดลอกของคุณได้ 60%
2278

+1 สำหรับ TAR เนื่องจากคุณสามารถคัดลอก / แยกไฟล์เก็บถาวรบางส่วน
309 Cristian ภาษีมูลค่าเพิ่ม

คำตอบนี้ถูกต้อง แต่ใน Windows 7 (อย่างน้อย) มีข้อผิดพลาดที่คัดลอกชุดเดียวกันที่แน่นอนของไฟล์บน XP จะมากได้เร็วกว่าบน Windows 7: social.technet.microsoft.com/Forums/en-US/ w7itproperf / thread / …
tbone

5

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


5
เว้นแต่ว่าโปรโตคอลการถ่ายโอนได้ทำงานต่อ
Unkwntech

1

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

  • ตรวจสอบชื่อไฟล์ว่าไม่ซ้ำใคร
  • เขียนรายการตารางไฟล์

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


1
ฉันเดาว่าเขายังคงต้องการไฟล์ขนาดเล็กทั้งหมดในระบบเป้าหมายดังนั้นเขาอาจจะต้องแตกซิปในภายหลังเช่นระบบไฟล์จะต้องทำงานต่อไป แม้ว่าการส่งไฟล์ขนาดใหญ่และการขยายไฟล์จะยังเร็วกว่าการถ่ายโอนไฟล์ขนาดเล็กทั้งหมดผ่านเน็ต
BlaM

@BlaM อย่างที่ฉันบอกไว้ในคำตอบทุกอย่างลงมาถึงความล่าช้า หากเวลาแฝงของเครือข่ายถูกเพิ่มลงในการดำเนินการ CreateFile แต่ละครั้งเวลาทั้งหมดอาจนานกว่านั้นมาก หากการคัดลอกนั้นฉลาดพอที่จะสร้างไฟล์ไปพร้อม ๆ กันมันอาจจะไม่ส่งผลกระทบต่อการทำงาน
ลุค Quinane

0

ขนาดแพ็คเก็ตเฉลี่ยที่สัมพันธ์กับขนาดไฟล์เฉลี่ยอาจเป็นสิ่งสำคัญที่นี่ ด้วยไฟล์ขนาดเล็กจำนวนมากคุณอาจพบว่าตัวเองกำลังส่งแพ็กเก็ตขนาดเล็กจำนวนมาก แพ็กเก็ตจิ๋วยังคงมีค่าใช้จ่าย TCP; คุณสามารถเพิ่มปริมาณการรับส่งข้อมูลได้เป็นสองเท่า

ระบบที่ทันสมัยและแม้กระทั่งคนโบราณสามารถส่งไฟล์ได้หลายไฟล์ผ่านการเชื่อมต่อ TCP เดียวหลีกเลี่ยงค่าใช้จ่ายในการจับมือนั้น


0

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

คือคัดลอก \ computer1 \ myshare ไปยัง c: \ files \ myshare อย่าใช้คอมพิวเตอร์เครื่องที่สามและคัดลอกจาก \ computer1 \ myshare ไปยัง \ computer2 \ mynewshare


0

การเลือกโพรโทคอลส่งผลกระทบต่อเวลาโดยรวมในการดำเนินการ - ตัวอย่างเช่นไปยังไฟล์ FTP จากโฮสต์หนึ่งไปยังอีกโฮสต์สามารถสังเกตได้เร็วกว่าการใช้ไฟล์ร่วมกันของ windows (แน่นอนว่าสิ่งต่าง ๆ เช่นสิทธิ์โดเมนและสิ่งอื่น ๆ หายไป แต่ในบางสถานการณ์อาจเป็นการแลกเปลี่ยนที่ยอมรับได้ - หลังจากทั้งหมดแล้วก็จะหายไปด้วยการซิป / คลายซิป)

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