ถ่ายโอนไฟล์ 30GB tar จากเซิร์ฟเวอร์ระยะไกลหนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่ง - ถูก จำกัด โดยพื้นที่ดิสก์


8

ฉันมีไฟล์ tar "Moodle" ขนาด 38GB ซึ่งฉันต้องโอนจากเซิร์ฟเวอร์เก่า (Shared hosting) ซึ่งเราสามารถเรียก "Server A" ไปยังเซิร์ฟเวอร์ใหม่ (Dedicated virtual) หรือ "Server B" ฉันอยู่กับ Mediatemple ถ้าช่วยได้

ฉันได้ tarballed ไดเรกทอรีและใช้ wget เพื่อโอนไปยังเซิร์ฟเวอร์ B ผ่าน SSH อย่างไรก็ตาม - มันเป็นแพคเกจ 100GB ที่อ่อนแอและฉันมีความจุของดิสก์ 96% - หมายความว่าฉันไม่สามารถปลดไฟล์บนเซิร์ฟเวอร์ B! มีวิธีใดบ้างที่ฉันสามารถถ่ายโอนไฟล์ขนาดใหญ่นี้จากเซิร์ฟเวอร์ A ไปยังเซิร์ฟเวอร์ B รักษาสิทธิ์และมีโอกาสน้อยที่สุดที่ไฟล์เสียหายซึ่งจะไม่ทำให้ฉันถึงขีด จำกัด ของดิสก์

แม้ว่าฉันจะใช้เวลาไปกับการทำสิ่งนี้มาตลอด แต่ฉันก็ยินดีที่จะละทิ้งแผนเดิมของฉันหากมีใครสามารถเสนอแนวคิดที่ดีกว่านี้ได้และฉันจะขอบคุณมาก!

คำตอบ:


21

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


1
สวัสดีเดนนิสขอบคุณสำหรับการตอบกลับ ฉันไม่คิดว่าคุณสามารถอธิบายเพิ่มเติมเกี่ยวกับวิธีการใช้คำสั่ง rsync ได้บ้าง? หรือให้บทความที่มีประโยชน์ ขอขอบคุณอีกครั้ง
alexbass

1
บทความที่มีประโยชน์น่าจะเป็น rsync manpage :) แต่โดยสรุป: ถ้าคุณมีการเข้าถึง ssh จาก serverb ถึง servera ให้รันสิ่งนี้บน serverb:rsync -av servera:/path/to/files/to/copy/ /path/to/copy/to
Dennis Kaarsemaker

1
หากคุณไม่แน่ใจว่าจะใช้คำสั่งพื้นฐานบนระบบปฏิบัติการที่คุณใช้ได้อย่างไรให้เริ่มจากศูนย์ช่วยเหลือ สำหรับเครื่อง Unix นั้นมักจะคล้ายman rsyncหรือrsync --help
mfinni

1
-aหมายถึง-r(และอีกหลายคนที่ยังคงลืมจนกระทั่ง-aมีการเพิ่มสถานะเป็น "สิ่งเหล่านี้เป็นธงที่มีประโยชน์สำหรับการสำรองข้อมูล")
Dennis Kaarsemaker

1
หากการรักษาความปลอดภัยไม่ใช่ปัญหา (ฉันหมายความว่าคุณไว้วางใจเครือข่ายระหว่างสองเครื่อง) nc ก็เป็นตัวเลือกเช่นกัน บนเซิร์ฟเวอร์: tar -zc source | nc -l 1313 บนไคลเอ็นต์: nc SERVER_IP 1313 | tar -zx
Tsvetomir Dimitrov

12

คุณอาจต้องการซื้อพื้นที่ดิสก์เพิ่มเติม แต่ถ้าคุณไม่ทำคุณสามารถ ...

ท่อ tarball รอบ ๆ แทนที่จะดาวน์โหลดมัน

newserver#  ssh olduser@oldserver "cat /path/to/tarball" | tar xf -

หรือถ้าคุณไม่มี SSH เข้าถึงเซิร์ฟเวอร์เก่าของคุณ

newserver# wget -O - http://oldserver/path/to/tarball | tar xf -

หรือใช้ rsync เช่นเดนนิสกล่าวว่า

มีความคิดสร้างสรรค์. มีวิธีแก้ไขปัญหาอื่น ๆ ที่ฉันไม่ได้พูดถึง


คุณอาจต้องใช้--numeric-ownerตัวเลือกก่อนทำ tarball เพื่อให้แน่ใจว่าเจ้าของและกลุ่มจะไม่เปลี่ยนแปลง ssh ouser@oserver tar -zcplC /src_path --numeric-owner . | tar -zxpC /dst_path
F. Hauri

@ F.Hauri --numeric-ownerสามารถมี (อาจร้ายแรง) ผลที่ไม่ตั้งใจถ้าโครงการ UID / GID แตกต่างกันระหว่างสองเครื่อง ซึ่งมักจะไม่ใช่ปัญหาในสภาพแวดล้อมภายใน แต่ย้ายจาก "โฮสติ้งที่ใช้ร่วมกัน" เป็น "เสมือนจริง" ซึ่งอาจทำให้เกิดปัญหา คุณควรคาดหวังว่าจะมีการแก้ไขเป็นเจ้าของบนเซิร์ฟเวอร์ใหม่ถ้าใช้tar, และอาจได้cpio rsync
voretaq7

ใช่คุณพูดถูก แต่ไม่ทราบว่าตัวเลือกประเภทนี้จะมีผลแบบขอบ (เหมือนกัน) ด้วยเช่นกัน ดีที่สุดของทั้งหมด: รู้ว่าสิ่งที่คุณกำลังทำและ ... rtfm ;-)
F. Hauri

... บางวิธีที่น่าสนใจ (ฟิลเตอร์) เพื่อการใช้งาน (หรือไม่) ที่จะมีความคิดสร้างสรรค์ : ncหรือopenssl, sed, gpg, uuencodeและmail(ด้วยความระมัดระวัง) enscript+ lpr+ [สายการบินนก] ( fr.wikipedia.org/wiki/IP_over_Avian_Carriers ) + +scan ocr.. แต่ยังมีอีกมาก ...
เอฟ. Hauri
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.