7-ज़िप एक मल्टी-पार्ट रार से फ़ाइल का हिस्सा निकालेगा, और फिर आप उन्हें dd के साथ एक साथ वापस सिलाई कर सकते हैं। उदाहरण के लिए, यदि आपके पास पहला और अंतिम रार-भाग है:
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
(इनपुट ब्लॉक आकार) आधे CPU समय की बचत करेगा, क्योंकि (आउटपुट ब्लॉक आकार) seek
की इकाइयों में है obs
। या हो सकता है कि कुछ अन्य उपकरण हैं जो एक मनमाना बाइट स्थिति की तलाश कर सकते हैं और फिर सामान्य आकार I / Os कर सकते हैं। या यदि आप यह स्क्रिप्टिंग कर रहे थे, तो आप bs=1
32k-align तक dd कर सकते थे , तब हो सकता हैtail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))