प्रगति बार के साथ टार बैकअप


3

मैं अपने टार बैकअप कमांड में एक प्रगति बार जोड़ना चाहूंगा। मुझे पता चला कि बार शेल स्क्रिप्ट को ऐसा करने में सक्षम होना चाहिए, लेकिन मैं सही कमांड का पता लगाने में असमर्थ हूं।

sudo tar pzcf - /media/data | bar > /media/backups/backup.tar.gz

उपरोक्त कमांड के साथ मैं कुछ जानकारी प्रदर्शित करने में सक्षम था, लेकिन अभी तक कोई प्रगति बार नहीं है।


जवाबों:


3

क्षमा करें, लेकिन यह संभव नहीं है। फ़ाइल से barही:

Synopsis:
  'bar' works just like 'cat', but shows a progress bar in ASCII art on stderr.
  The script's main function is meant to be usable in any Bourne shell to be
  suitable for install scripts without the need for any additional tool.

समस्या यह है कि, प्रगति पट्टी को प्रदर्शित करने के लिए, barपहले फ़ाइल का आकार जानना होगा।

के लिए निकालने एक archieve, कि कोई समस्या नहीं है: अगर backup.tarहै 100 MiBबड़ा और 50 MiBअब तक संसाधित किया गया है, हम पर हैं 50 %

हालांकि, एक आर्चिव बनाने के लिए , से barपढ़ता है stdin, जो सभी व्यावहारिक उद्देश्यों के लिए अनंत है। जैसा कि प्रलेखन कहता है:

अनंत धाराएँ अच्छी नहीं हैं: बार केवल 0% और 100% पर प्रदर्शित होता है। [...]


बैकअप प्रयोजनों के लिए प्रगति बार प्रदर्शित करने का एकमात्र तरीका मैं ( बार के साथ टार के एक कस्टम संस्करण को संकलित करने के अलावा ) है:

  1. फ़ाइलों के संचित आकार की गणना करें /media/data

  2. एक-एक करके backup.tarफाइल बनाएं और अपग्रेड करें /media/data

  3. प्रत्येक फ़ाइल के बाद, वर्तमान प्रतिशत की गणना करें और इसे प्रदर्शित करें।

  4. gzip backup.tar(आप इसके लिए उपयोग कर सकते हैं tar)।

उदाहरण:

TOTAL=$(du -b /media/data | grep -oP "^\d+")
CURRENT=0
echo "Archiving:"
IFS="
"
for FILE in $(find /media/data -type f); do 
    tar rf backup.tar $FILE
    CURRENT=$(($CURRENT+$(du -b $FILE | grep -oP "^\d+")))
    echo -en "\r"$((100*($CURRENT-1)/$TOTAL+1))"%"
done
echo
echo "Compressing:"
bar backup.tar | gzip > backup.tar.gz
rm backup.tar

सावधान:

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