मैं एक तरह से rsync आउटपुट को फ़िल्टर / रीडायरेक्ट करने का तरीका खोज रहा हूं, जहां इसे "डायलॉग - गेज" कमांड को खिलाया जा सकता है, इसलिए मुझे फाइल सिंक के दौरान एक अच्छी दिखने वाली प्रगति पट्टी मिल सकती है। वर्तमान में मैंने केवल इसे प्रॉम्प्ट पर सीधे परीक्षण किया है, लेकिन मैं इसे (bash) शेल स्क्रिप्ट में करने की योजना बना रहा हूं।
मैंने इंटरनेट के चारों ओर देखा है और बिट्स और टुकड़े पाए हैं, लेकिन मैं अभी भी इसे काम करने के लिए कुछ याद कर रहा हूं
(अस्वीकरण: यह पूरी तरह से गलत दृष्टिकोण हो सकता है, और एक पुनर्निर्देशित / पाइपिंग एकरूपता है)
मैंने वर्तमान में एक साथ क्या रखा है:
rsync -avz --progress -e "ssh" user@server:/home/user/data/ /home/user/data | awk -f /home/user/rsync.awk | sed 's/\([0-9]*\).*/\1/' | dialog --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70
पहले मेरे पास वास्तविक rsync कमांड है - -प्रोग्रेस विकल्प के साथ rsync से आउटपुट को awk में पाइप किया जाता है और followng awk फ़िल्टर का उपयोग करता है:
{
if (index($0, "to-check=") > 0)
{
split($0, pieces, "to-check=")
split(pieces[2], term, ")");
split(term[1], division, "/");
print (1-(division[1]/division[2]))*100
}
# else
# {
# print "#"$0;
# }
fflush();
}
यह rsync आउटपुट को फ़िल्टर करता है और निम्न प्रारूप में प्रतिशत प्रदान करता है:
53.7037
55.5556
57.4074
59.2593
61.1111
62.963
तो दशमलव संख्याओं से छुटकारा पाने के लिए, मैं आउटपुट को sed से फ़ीड करता हूं:
sed 's/\([0-9]*\).*/\1/'
जो निम्न आउटपुट देता है:
64
66
68
70
72
74
75
77
उन नंबरों को इस तरह डायलॉग में डाला जाता है:
dialog --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70
जहां तक मुझे पता है, "संवाद - गेज" आदि को इसे स्वीकार करना चाहिए, लेकिन यह केवल 0% होने तक प्रगति दिखाता है जब तक कि यह अचानक 100% तक नहीं पहुंच जाता है
क्या कोई मुझे यहाँ सही दिशा में ले जा सकता है? क्या मैं एक काम करने वाले प्रोग्रेसबार से बहुत दूर हूं? क्या इसे प्राप्त करने का एक बेहतर तरीका है?
सादर,
क्रिस्टर
EDIT : @lynxlynxlynx के जवाब को ध्यान में रखने के बाद, सही कमांड लाइन है:
rsync -avz --progress -e "ssh" user@server:/home/user/data/ /home/user/data \
| awk -f /home/user/rsync.awk \
| sed --unbuffered 's/([0-9]*).*/\1/' \
| dialog --title "My Gauge" --gauge "Hi, this is a gauge widget" 20 70