เซิร์ฟเวอร์ของเราใช้งาน Ubuntu Linux และไฟล์ไบนารีคือการถ่ายโอนข้อมูล BSON ของชุด MongoDB ขนาดใหญ่ เครื่องมือมีความน่าเชื่อถือแค่split
ไหน? มีวิธีที่เร็วกว่าหรือดีกว่าในการทำเช่นนี้?
เซิร์ฟเวอร์ของเราใช้งาน Ubuntu Linux และไฟล์ไบนารีคือการถ่ายโอนข้อมูล BSON ของชุด MongoDB ขนาดใหญ่ เครื่องมือมีความน่าเชื่อถือแค่split
ไหน? มีวิธีที่เร็วกว่าหรือดีกว่าในการทำเช่นนี้?
คำตอบ:
หากต้องการแยกให้แบ่ง -b
cat
ในการเข้าร่วมเพียง
AFAIK พวกเขาเชื่อถือได้อย่างสมบูรณ์และฉันสงสัยว่ามีบางสิ่งที่มีประสิทธิภาพมากกว่า
แยกมีความน่าเชื่อถือมาก เราใช้สำหรับการย้ายไฟล์บันทึกขนาดใหญ่และใช้งานได้ดีมากถึงสอง GB (ไม่ใช่ 50 gb ต่อไป)
ฉันเชื่อว่าคุณสามารถลองใช้ตัวแยกตามความต้องการของคุณและแจ้งให้เราทราบ
แบ่งออกเป็นไฟล์ขนาด 5GB
split --bytes = 5G inputfile
มันจะแบ่งออกเป็นหลายไฟล์ 5GB และตั้งชื่อเป็น xaa, xab, xac, .... และอื่น ๆ
concatenate
cat x *> outfile
โดยนี้คุณสามารถเชื่อมต่อเป็นไฟล์เดียวในส่วนอื่น ๆ
หากคุณติดตั้ง rar แล้วมันทำงานได้ดีมากสำหรับฉัน:
เพื่อแยก
rar a -m0 -v5000m newfilename giantfile.foo
เพื่อประกอบใหม่:
unrar x newfilename.*
ประโยชน์ที่ได้รับ:
split
และcat
มีความน่าเชื่อถือโดยสิ้นเชิง คุณสามารถบีบอัดอินไลน์เพิ่มเติมได้เช่นนี้ สมมติว่าไฟล์อินพุตของคุณคือdump.bson
:
gzip < dump.bson | split -b 32M - dump.bson.gz.
จากนั้นสร้างใหม่ด้วยสิ่งนี้:
cat dump.bson.gz.* | gunzip > dump.bson
เคล็ดลับนี้ทำงานได้เป็นอย่างดีด้วยxz(dec)
ในสถานที่ของg(un)zip