7-zip akan mengekstrak bagian file dari rar multi-bagian, dan kemudian Anda dapat menjahitnya kembali bersama dengan dd. Misalnya, jika Anda memiliki rar-bagian pertama dan terakhir:
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))
Jika offset yang Anda butuhkan tidak prima, maka gunakan ukuran blok yang lebih besar dari satu. dd
hanya dapat seek
mengalikan ukuran blok output. dd
benar-benar membuat read
dan write
panggilan sistem dengan ukuran blok itu, jadi bs=1
sangat menyebalkan.
Besar ibs
(ukuran blok input) akan menghemat separuh waktu CPU, karena seek
dalam satuan obs
(ukuran blok output). Atau mungkin ada beberapa alat lain yang dapat mencari ke posisi byte sewenang-wenang dan kemudian melakukan I / Os berukuran normal. Atau jika Anda membuat skrip ini, Anda dapat bs=1
menemukan hingga 32k, maka mungkintail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))