วิธีถ่ายโอนไฟล์จำนวนมากเป็นวิธีที่เร็วที่สุดและน่าเชื่อถือที่สุด


10

ฉันพยายามถ่ายโอนไฟล์ขนาด 100k ประมาณ 90GB ตอนนี้ฉันกำลังใช้ rsync daemon แต่มันช้า 3.4mb / s และฉันต้องทำหลายครั้ง ฉันสงสัยว่าตัวเลือกใดที่ฉันมีซึ่งจะให้การเชื่อมต่อสูงสุด 100mbit ผ่านอินเทอร์เน็ตและเชื่อถือได้มาก


2
คุณได้รับเกือบหนึ่งในสามของการเชื่อมต่อของคุณ - เป็นที่น่านับถือ แต่ก็ไม่ได้ยอดเยี่ยม ไกลแค่ไหนที่ไฟล์อิเล็กตรอนทำการถ่ายโอนไฟล์?
Shane Madden

เวลาแฝง 50ms ระหว่างเซิร์ฟเวอร์สองเครื่อง
incognito2

5
ฉันเห็นไฟล์จำนวนมากครั้งหนึ่งเมื่อhyperboleandahalf.blogspot.com/2010/04/…
Smudge

หากคุณใช้ rsync daemon จะไม่มีการใช้ ssh ใช่มั้ย จากนั้นคำอธิบายน่าจะเป็นโครงสร้างพื้นฐานระหว่างโฮสต์ คุณสามารถลอง netperf หรือ iperf หรือ flowgrind เพื่อทดสอบความเร็วระหว่างโฮสต์ หากการทดสอบนี้ให้อัตราการถ่ายโอนที่สูงขึ้นคุณควรดูว่า rsync ทำให้สิ่งต่าง ๆ ช้าลงอย่างไร: อ่าน i / o บนเซิร์ฟเวอร์ช้าเขียน i / o บนไคลเอนต์ไฟล์ขนาดเล็กจำนวนมากระบบไฟล์ ฯลฯ
AndreasM

คำตอบ:


11

คุณคิดว่าSneakernet เป็นไหม? ด้วยชุดข้อมูลขนาดใหญ่การจัดส่งในชั่วข้ามคืนจึงมักจะรวดเร็วและถูกกว่าการถ่ายโอนทางอินเทอร์เน็ต


10
"อย่าประมาทแบนด์วิดท์ของสเตชั่นแวกอนที่เต็มไปด้วยเทปพุ่งไปตามทางหลวง" - AST
voretaq7

1
ดีเนื่องจากความสามารถในการจ่ายของฮาร์ดแวร์กิกะบิต LAN หากการถ่ายโอน LAN เวลาที่ใช้ในการเขียนผ่าน eSATA ไปยังแกนหมุนเดียวนั้นไม่ใช่สิ่งที่น่าสนใจ
memnoch_proxy

10

อย่างไร? หรือ TL; DR

วิธีที่เร็วที่สุดที่ฉันได้พบคือการรวมกันของtar, และmbufferssh

เช่น:

tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"

การใช้สิ่งนี้ฉันได้ประสบความสำเร็จในการถ่ายโอนเครือข่ายท้องถิ่นมากกว่า 950 Mb / s ในลิงค์ 1Gb แทนที่พา ธ ในแต่ละคำสั่ง tar เพื่อให้เหมาะสมกับสิ่งที่คุณกำลังถ่ายโอน

ทำไม? mbuffer!

คอขวดที่ใหญ่ที่สุดในการถ่ายโอนไฟล์ขนาดใหญ่ผ่านเครือข่ายก็คือดิสก์ I / O คำตอบที่เป็นหรือmbuffer bufferพวกเขาส่วนใหญ่คล้ายกัน แต่mbufferมีข้อได้เปรียบบางอย่าง ขนาดบัฟเฟอร์เริ่มต้นเป็น 2MB สำหรับmbufferและ 1MB bufferสำหรับ บัฟเฟอร์ที่ใหญ่กว่ามักจะไม่มีวันว่างเปล่า การเลือกขนาดบล็อกซึ่งเป็นขนาดที่เล็กที่สุดร่วมกันของขนาดบล็อกเนทีฟทั้งในระบบไฟล์เป้าหมายและปลายทางจะให้ประสิทธิภาพที่ดีที่สุด

บัฟเฟอร์เป็นสิ่งที่ทำให้ทุกความแตกต่าง! ใช้มันหากคุณมีมัน! หากคุณไม่ได้รับมัน! การใช้(m}?bufferสิ่งใด ๆ ย่อมดีกว่าสิ่งใด มันเกือบจะเป็นยาครอบจักรวาลสำหรับการถ่ายโอนไฟล์เครือข่ายที่ช้า

หากคุณถ่ายโอนไฟล์หลายไฟล์tarให้ใช้"ก้อน" เข้าด้วยกันในสตรีมข้อมูลเดียว หากเป็นไฟล์เดียวคุณสามารถใช้catหรือเปลี่ยนเส้นทาง I / O ค่าใช้จ่ายของการtarเทียบcatเป็นนัยสำคัญทางสถิติดังนั้นฉันมักจะใช้tar(หรือzfs -sendที่ฉันสามารถ) จนกว่าจะแล้วtarball ไม่รับประกันสิ่งเหล่านี้เพื่อให้ข้อมูลเมตาแก่คุณ (และโดยเฉพาะอย่างยิ่งcatจะไม่) หากคุณต้องการข้อมูลเมตาฉันจะปล่อยให้มันเป็นแบบฝึกหัดให้คุณ

ในที่สุดการใช้sshกลไกการขนส่งก็มีความปลอดภัยและมีค่าใช้จ่ายน้อยมาก อีกครั้งค่าใช้จ่ายของsshvs. ncไม่มีนัยสำคัญทางสถิติ


มีการเข้ารหัสค่าใช้จ่ายในการใช้ SSH เป็นบางครั้งการขนส่ง ดู: การคัดลอกไฟล์ระหว่างเครื่อง linux ที่มีการรับรองความถูกต้องสูงโดยไม่มีการเข้ารหัส
ewwhite

2
คุณสามารถใช้กลไกการเข้ารหัสที่เร็วขึ้นหากคุณต้องการ แต่คุณไม่จำเป็นต้องไปผ่าน thsh นี้ ฉันต้องการตั้งค่าพอร์ต -O และ -I บน mbuffer ทั้งสองด้าน แม้สรรพสิ่งนี้เป็นสองคำสั่งคุณข้ามการเข้ารหัสและเพิ่มแบนด์วิดท์ของเครือข่ายโดยบัฟเฟอร์ปลายทั้งสอง ฉันกำลังส่ง tar tar ที่ 720 + Mbps บน LAN ในพื้นที่ของฉันด้วยtar -cf - .|mbuffer -m128k -s 256M -I 9090 & mbuffer -m128k -s 256M -O host:9090 | tar -xf -
memnoch_proxy

2
@memnoch_proxy: นั่นเป็นข้อเสนอแนะที่ดี (ซึ่งฉันได้รับการโหวต) แต่ในวันนี้และยุคที่ NSA ยังแตะสายข้อมูลส่วนตัวระหว่างศูนย์ข้อมูล (เช่น Google และ Yahoo) โดยใช้การเข้ารหัส IMO เป็นนิสัยที่ดีเสมอ . การใช้sshทำให้มันง่าย การใช้stunnel, socatหรือopensslทำงานมากเกินไป แต่พวกเขากำลังที่ซับซ้อนมากขึ้นในการตั้งค่าสำหรับการถ่ายโอนง่าย
บาฮามาต

1
@bahamat ขอบคุณที่ทำให้ฉันดูคำถามอีกครั้ง ข้อเสนอแนะของฉันดูเหมือนจะเหมาะสมก็ต่อเมื่อการถ่ายโอนสามารถเกิดขึ้นผ่าน VPN ได้ สำหรับการถ่ายโอนทางอินเทอร์เน็ตฉันก็จะใช้ ssh เช่นกัน
memnoch_proxy

8

คุณพูดถึง "rsync" ดังนั้นฉันคิดว่าคุณใช้ Linux:

ทำไมคุณไม่สร้างไฟล์ tar หรือ tar.gz เวลาถ่ายโอนเครือข่ายของไฟล์ขนาดใหญ่หนึ่งไฟล์จะเร็วกว่าไฟล์ขนาดเล็ก คุณสามารถบีบอัดได้หากต้องการ ...

น้ำมันดินโดยไม่มีการบีบอัด:

บนเซิร์ฟเวอร์ต้นทาง:

tar -cf file.tar /path/to/files/

จากนั้นในตอนท้ายที่ได้รับ:

cd /path/to/files/
tar -xf /path/to/file.tar

น้ำมันดินด้วยการบีบอัด:

บนเซิร์ฟเวอร์ต้นทาง:

tar -czf file.tar.gz /path/to/files/

จากนั้นในตอนท้ายที่ได้รับ:

cd /path/to/files/
tar -xzf /path/to/file.tar.gz

คุณเพียงแค่ใช้ rsync เพื่อทำการถ่ายโอนไฟล์ (tar | tar.gz) ที่แท้จริง


เฉพาะในกรณีที่มีสถานที่สำหรับจัดเก็บไฟล์เก็บถาวร ..
Tebe

5

คุณสามารถลองtarและsshเคล็ดลับที่อธิบายไว้ที่นี่ :

tar cvzf - /wwwdata | ssh root@192.168.1.201 "dd of=/backup/wwwdata.tar.gz"

นี้ควรจะเขียนทับได้ไปต่อไปนี้ :

tar cvzf - /wwwdata | ssh root@192.168.1.201 "tar xvf -"

แม้ว่าคุณจะสูญเสีย--partialคุณสมบัติของrsyncในกระบวนการ แต่ หากไฟล์ไม่เปลี่ยนแปลงบ่อยครั้งการใช้ชีวิตด้วยการเริ่มต้นช้าrsyncอาจมีค่าสูงในขณะที่มันจะเร็วขึ้นมากในอนาคต


2

คุณสามารถใช้ตัวเลือกการบีบอัดต่างๆของ rsync

-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

อัตราส่วนการบีบอัดสำหรับไฟล์ไบนารีอยู่ในระดับต่ำมากดังนั้นคุณสามารถข้ามไฟล์เหล่านั้นโดยใช้ --skip-compress เช่น iso, เก็บถาวรและบีบอัด tarballs เป็นต้น


-6

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

SFTP มีความน่าเชื่อถือฉันจะให้ช็อตเนื่องจากมันง่ายในการติดตั้งและมันอาจเร็วขึ้นในบางกรณี


5
FTP ต้องตาย มันไม่ได้เข้ารหัสมันไม่สามารถจัดการกับการขัดจังหวะได้ดีและมีทางเลือกอย่างน้อยครึ่งโหลสำหรับสิ่งที่ไม่ได้ดูดอย่างสมบูรณ์
MDMarra

1
เคยได้ยิน SFTP ไหม
Tillman32

8
ใช่แล้ว มันไม่เกี่ยวข้องกับโปรโตคอล FTP ในทุกสิ่งยกเว้นชื่อและความจริงที่ว่ามันย้ายไฟล์ไปมา
MDMarra

5
FTP นั้นไม่น่าเชื่อถือที่มีชื่อเสียงเช่นกันเมื่อทำการข้ามไฟร์วอลล์ (มันเริ่มจากช่วงเวลาก่อนไฟร์วอลล์เมื่อไคลเอ็นต์ของคุณเปิดพอร์ตแบบสุ่มเพื่อยอมรับการเชื่อมต่อด้านหลังและการแฮ็กของ Passive & Extended Passive FTP เพื่อแก้ไขข้อ จำกัด นั้นก็คือ: Hackery)
voretaq7
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.