मैं एक टार कमांड को कैसे फिर से शुरू करता हूं जिसे मार दिया गया था


11

मैं एक कर रहा था: tar -cvfऔर मुझे इसे मारना पड़ा ctrl-C। मुझे पता है कि मुझे करना चाहिए था Ctrl-Zऔर फिर काम को वापस लाने के लिए अग्रसर होना चाहिए ... लेकिन यह कहानी नहीं है।

क्या मैं उस बिंदु से फिर से शुरू कर सकता हूं जिसे मैंने कार्य रोक दिया था?


क्या डेस्टिनेशन लोकेशन में एक अधूरी टार फाइल है?
कार्तिक टी

हाँ एक अधूरा टार है।
mthpvg

जवाबों:


11

यह विधि आपके टार संग्रह को फिर से बनाएगी, और तैयार भाग को मौजूदा फ़ाइल में जोड़ देगी। यह एक नेटवर्क कनेक्शन पर बैकअप लेने पर उपयोगी हो सकता है। यदि आपके INFILES में कोई भी डेटा बदल गया है, तो आप संभवतः एक भ्रष्ट संग्रह में परिणाम करेंगे। पूरा होने के बाद अपने संग्रह का परीक्षण करना सुनिश्चित करें।

निम्नलिखित लाइन पर सही नामों के लिए इंफ़िल्स और ओउटर को बदलें।

INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"

स्पष्टीकरण:

SIZE="$(wc -c < $OUTFILE)" # पुरालेख का वर्तमान आकार प्राप्त करें।

tar -cz --to-stdout "$INFILES" |# आर्काइव बनाना शुरू करें और tailकमांड को आउटपुट भेजें ।

tail -c +$(($SIZE+1)) >> # $ SIZE + 1 से पहले डेटा की उपेक्षा करें, और बाकी संग्रह $ OUTFILE को फिर से शुरू करें।


2
मुझे लगता है कि यह केवल टार प्रक्रिया को फिर से शुरू करने से तेज है क्योंकि इसकी वास्तव में डिस्क पर कुछ भी नहीं लिखा जा रहा है?
टायलर

2

सबसे अच्छा उपाय यह होगा कि आप टार फाइल को डिलीट कर दें और जिस प्रक्रिया को पहले से लागू किया गया था उसे फिर से शुरू nohupकर दें &। वैकल्पिक रूप से, आप इसे चला सकते हैं tar -tfvऔर नए के लिए इसे बाहर कर सकते हैं tar -cvf


2
tar -cvfमौजूदा फ़ाइल को अधिलेखित कर देगा। क्या आपका मतलब है tar -rvf? इसके अलावा, आखिरी फाइल जो संग्रह को लिखी गई थी, वह अधूरी थी।
गाइल्स का SO- बुराई पर रोक '23

तो यह विचार उन फाइलों की एक सूची बनाने का है जो पहले से ही टारबॉल में हैं, पिछले एक को घटाते हैं जो शायद अधूरा है। और फिर चलाओ एक tar -rvf?
mthpvg

2

तुम नहीं कर सकते; आपको बस शुरू करने की जरूरत है।


1

मैं इस मामले में क्या करता हूं, कि मेरे पास एक अधूरा tarसंग्रह है, मैं संग्रह में फ़ाइलों की एक सूची बनाता हूं:

tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done

sedइन निर्देशिकाओं, नहीं फ़ाइलें हैं, और हम निर्देशिका फिर से डंप करने के लिए और केवल उन्हीं निर्देशिका में उन फ़ाइलों को छोड़, पहले tar संग्रह में पहले से ही है कि हम चाहते हैं: आदेश उन सभी लाइनों, स्लैश है हटा देता है। इसके अलावा, हम sedअंतिम फ़ाइल नाम को हटाने देते हैं , क्योंकि इसे बहुत आंशिक रूप से केवल डंप किया गया है, इसलिए हम इसे फिर से संग्रहीत करेंगे।

फिर बस files-doneएक नई tarकमांड के लिए -X विकल्प के माध्यम से सूची पास करें :

tar cfvX archive2.tar files-done SOURCEDIR

नए टार कमांड पर एक अलग आउटपुट फ़ाइलनाम का उपयोग करना सुनिश्चित करें, या आप अपने आंशिक संग्रह को अधिलेखित कर देंगे। भ्रष्ट टार आर्काइव को सीधे जोड़ने की कोशिश न करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.