แบ่งไฟล์ขนาดใหญ่ออกเป็นชิ้นเล็ก ๆ


65

ฉันจะแบ่งไฟล์ขนาดใหญ่+ 4GBเป็นไฟล์ขนาดเล็กได้อย่างไรประมาณ500MBต่อไฟล์

และฉันจะรวบรวมอีกครั้งเพื่อรับไฟล์ต้นฉบับได้อย่างไร


2
เวอร์ชันสำหรับบรรทัดข้อความ: stackoverflow.com/questions/2016894/…
Ciro Santilli 事件改造中心中心法轮功六四事件

คำตอบ:


79

คุณสามารถใช้แยกและแมว

ยกตัวอย่างเช่น

$ 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

2
ลองใช้คำสั่งนี้:man split cat md5sum
เควิน M

6
เมื่อประกอบฉันแนะนำว่าชิ้นcat foo.{000..NNN}ไหนNNNเป็นชิ้นสุดท้ายที่คาดไว้ ด้วยวิธีนี้คุณจะได้รับข้อความแสดงข้อผิดพลาดหากชิ้นส่วนหนึ่งหายไป แต่โปรดทราบว่า-dการรับส่วนต่อท้ายเป็นตัวเลขนั้นขึ้นอยู่กับการแบ่ง GNU บนแพลตฟอร์มอื่น ๆ ที่คุณต้องทำอย่างไรกับfoo.aaa, foo.aabฯลฯ
กิลส์

1
และจำไว้ว่าสำหรับsplitKB = 1,000, K = 1024, MB = 1,000 * 1,000, M = 1024 * 1024 เป็นต้น
Zorawar

1
สิ่งนี้ไม่ควร... cat > foo_3เป็น... cat >>foo_3หรือ
alk

1
หากคุณตัดสินใจที่จะบรรเทาความเจ็บปวดโดยใช้ยูทิลิตี้ rarและ7zipมักจะใช้ในการทำแยกดังกล่าวง่ายต่อการรวมกันอีกครั้งข้ามแพลตฟอร์ม
infixed

4

คุณสามารถทำได้ด้วย Archive Manager หากคุณต้องการ GUI ดูภายใต้ 'บันทึก -> ตัวเลือกอื่น ๆ -> แบ่งออกเป็นวอลุ่มของ'


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