7-zip จะแยกส่วนของไฟล์จาก rar หลายส่วนแล้วคุณสามารถต่อกลับเข้าด้วยกันด้วย dd ตัวอย่างเช่นหากคุณมีชิ้นส่วน rar แรกและชิ้นสุดท้าย:
7z x p1.rar
mv dir p1 # rename out of the way
7z x plast.rar
unrar l p1.rar
# note the file size of the entire file
ls -l dir/file # note the size of the last part
dd if=dir/file of=p1/file conv=notrunc bs=1 seek=$((full_size - lastpart_size))
ถ้าอ็อฟเซ็ตที่คุณต้องการค้นหานั้นไม่สำคัญให้ใช้ขนาดบล็อกที่ใหญ่กว่าหนึ่งบล็อก dd
สามารถseek
คูณผลขนาดบล็อกได้เท่านั้น dd
จริงๆread
แล้วการwrite
โทรและระบบด้วยขนาดบล็อกนั้นมันbs=1
แย่จริงๆ
ขนาดใหญ่ibs
(ขนาดบล็อกอินพุต) จะช่วยประหยัดเวลาครึ่งซีพียูเนื่องจากseek
อยู่ในหน่วยของobs
(ขนาดบล็อกออก) หรืออาจมีเครื่องมืออื่น ๆ ที่สามารถค้นหาตำแหน่งไบต์ตามอำเภอใจแล้วทำ I / Os ขนาดปกติ หรือถ้าคุณเขียนสคริปต์สิ่งนี้คุณสามารถbs=1
ปรับแนวได้สูงสุด 32k ดังนั้นอาจเป็นไปได้tail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))