ฉันจะแบ่งไฟล์ขนาดใหญ่+ 4GBเป็นไฟล์ขนาดเล็กได้อย่างไรประมาณ500MBต่อไฟล์
และฉันจะรวบรวมอีกครั้งเพื่อรับไฟล์ต้นฉบับได้อย่างไร
ฉันจะแบ่งไฟล์ขนาดใหญ่+ 4GBเป็นไฟล์ขนาดเล็กได้อย่างไรประมาณ500MBต่อไฟล์
และฉันจะรวบรวมอีกครั้งเพื่อรับไฟล์ต้นฉบับได้อย่างไร
คำตอบ:
คุณสามารถใช้แยกและแมว
ยกตัวอย่างเช่น
$ split --bytes 500M --numeric-suffixes --suffix-length=3 foo foo.
(โดยที่ชื่อไฟล์อินพุตfoo
และอาร์กิวเมนต์สุดท้ายคือส่วนนำหน้าเอาต์พุต) สิ่งนี้จะสร้างไฟล์เช่นfoo.000 foo.001
...
คำสั่งเดียวกันกับตัวเลือกสั้น ๆ :
$ split -b 100k -d -a 3 foo foo
นอกจากนี้คุณยังสามารถระบุ "--line-bytes" หากคุณต้องการให้มันแยกขอบเขตของเส้นแทนที่จะเป็นจำนวนไบต์ที่แน่นอน
สำหรับการประกอบชิ้นส่วนที่สร้างขึ้นใหม่อีกครั้งคุณสามารถใช้เช่น:
$ cat foo.* > foo_2
(สมมติว่าเชลล์เรียงลำดับผลลัพธ์ของเชลล์ globbing - และจำนวนชิ้นส่วนไม่เกินขีด จำกัด ของระบบที่ขัดแย้งกัน)
คุณสามารถเปรียบเทียบผลลัพธ์ผ่าน:
$ cmp foo foo_2
$ echo $?
(ซึ่งควรเอาท์พุท 0)
หรือคุณสามารถใช้การรวมกันของ find / sort / xargs เพื่อประกอบชิ้นส่วนอีกครั้ง:
$ find -maxdepth 1 -type f -name 'foo.*' | sort | xargs cat > foo_3
man split cat md5sum
cat foo.{000..NNN}
ไหนNNN
เป็นชิ้นสุดท้ายที่คาดไว้ ด้วยวิธีนี้คุณจะได้รับข้อความแสดงข้อผิดพลาดหากชิ้นส่วนหนึ่งหายไป แต่โปรดทราบว่า-d
การรับส่วนต่อท้ายเป็นตัวเลขนั้นขึ้นอยู่กับการแบ่ง GNU บนแพลตฟอร์มอื่น ๆ ที่คุณต้องทำอย่างไรกับfoo.aaa
, foo.aab
ฯลฯ
split
KB = 1,000, K = 1024, MB = 1,000 * 1,000, M = 1024 * 1024 เป็นต้น
... cat > foo_3
เป็น... cat >>foo_3
หรือ
rar
และ7zip
มักจะใช้ในการทำแยกดังกล่าวง่ายต่อการรวมกันอีกครั้งข้ามแพลตฟอร์ม
คุณสามารถทำได้ด้วย Archive Manager หากคุณต้องการ GUI ดูภายใต้ 'บันทึก -> ตัวเลือกอื่น ๆ -> แบ่งออกเป็นวอลุ่มของ'