ใช้หลายหัวข้อ scp พร้อมกัน


11

ใช้หลายหัวข้อ scp พร้อมกัน:

พื้นหลัง:

ฉันมักจะหาตัวเองมิเรอร์ชุดของเซิร์ฟเวอร์ไฟล์จำนวนมากและรวมอยู่ในไฟล์เหล่านี้เป็นเซิร์ฟเวอร์หลายพันไฟล์ 1kb-3KB เล็ก ๆ น้อย ๆ เซิร์ฟเวอร์ทั้งหมดเชื่อมต่อกับพอร์ต 1Gbps โดยทั่วไปจะกระจายอยู่ในศูนย์ข้อมูลที่หลากหลาย

ปัญหา:

SCP ถ่ายโอนไฟล์ขนาดเล็กเหล่านี้ทีละหนึ่งและใช้เวลานานและฉันรู้สึกว่าฉันกำลังสูญเสียทรัพยากรเครือข่ายที่สวยงามที่ฉันมี

สารละลาย?:

ฉันมีความคิด การสร้างสคริปต์ซึ่งแบ่งไฟล์เป็นจำนวนเท่ากันและเริ่มเธรด 5-6 scp ซึ่งในทางทฤษฎีแล้วจะทำเสร็จเร็วขึ้น 5-6 ครั้งใช่ไหม แต่ฉันไม่มีประสบการณ์การเขียนสคริปต์ linux!

คำถาม (s):

  • มีวิธีแก้ไขปัญหาดังกล่าวดีกว่าหรือไม่
  • มีอะไรแบบนี้ที่มีอยู่แล้วเหรอ?
  • ถ้าไม่มีมีคนที่จะให้ฉันเริ่มต้นหรือช่วยฉันออกมา?
  • หากไม่ใช่ 2 หรือ 3 จะเป็นที่ไหนดีที่เริ่มมองหาการเรียนรู้การเขียนสคริปต์ linux ชอบทุบตีหรืออื่น ๆ

คำตอบ:


11

ฉันจะทำเช่นนี้:
tar -cf - /manyfiles | ssh dest.server 'tar -xf - -C /manyfiles'

ขึ้นอยู่กับไฟล์ที่คุณถ่ายโอนมันสามารถใช้การบีบอัดtarคำสั่งได้
tar -czf - /manyfiles | ssh dest.server 'tar -xzf - -C /manyfiles'

มันอาจสมเหตุสมผลที่คุณเลือก CPU ที่เป็นมิตรก่อนหน้าสำหรับsshคำสั่ง (เช่น arcfour): tar -cf - /manyfiles | ssh -c arcfour dest.server 'tar -xf - -C /manyfiles'

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


10

ใช้แทนrsync scpคุณสามารถใช้rsyncมากกว่าsshได้อย่างง่ายดายเช่นscpและสนับสนุน "ไปป์ไลน์ของการถ่ายโอนไฟล์ที่จะลดค่าใช้จ่ายแอบแฝง"

หนึ่งเคล็ดลับ: หากข้อมูลถูกบีบอัดให้เปิดใช้งานการบีบอัด หากไม่เป็นเช่นนั้นให้ปิดการใช้งาน


ฉันเพิ่งโอนหนึ่งครั้งเมื่อคืนด้วย scp และกำลังทำการถ่ายโอนอื่นที่คล้ายกันกับ rsync - ดูเหมือนเร็วกว่ามาก อย่างไรก็ตามยังคงมีการถ่ายโอนไฟล์หนึ่งไฟล์ในแต่ละครั้ง - ความคิดใด ๆ ที่จะทำให้สิ่งนี้ทำได้หลายเธรด (นอกเหนือจาก - รวมถึง - และไม่รวมกลุ่มไดเรกทอรีผ่านสคริปต์ดู: sun3.org/archives / 280 )
aendrew

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

1

ฉันกำลังจะแนะนำ GNO Parallel (ซึ่งยังคงต้องใช้งานสคริปต์บางส่วนในส่วนของคุณ) แต่แล้วฉันก็พบ pscp (ซึ่งเป็นส่วนหนึ่งของpssh ) นั่นอาจเหมาะกับความต้องการของคุณ


2
ดูเหมือนว่าpsshทำงานพร้อมกันหลายเครื่อง ฉันไม่คิดว่ามันจะใช้การขนานในระดับไฟล์
David Schwartz

ฉันอาจจะเฉพาะเจาะจง - ฉันหมายถึง pscp
Rilindo

1

ไม่ scp โดยตรง แต่ตัวเลือกสำหรับการ mutli เธรดการถ่ายโอน (แม้ในไฟล์เดียว) เป็น bbcp - https://www2.cisl.ucar.edu/resources/storage-and-file-systems/bbcp

ใช้อ็อพชัน -s สำหรับจำนวนเธรดที่คุณต้องการถ่ายโอนข้อมูล เหมาะสำหรับการเชื่อมต่อที่มีแบนด์วิดท์สูง แต่ล้าหลังเนื่องจากความล่าช้า จำกัด ขนาดหน้าต่าง TCP ต่อเธรด


0

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

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