यहां थोड़ी देर हो सकती है लेकिन भविष्य में उत्तर देने वाले लाभान्वित हो सकते हैं।
यह मुझे बहुत परेशान कर रहा था इसलिए मैंने सोचा कि मैं नीचे जाऊंगा और अपनी पहली स्क्रिप्ट लिखूंगा। पैकेज ज़ेनिटी को स्थापित किया जाना चाहिए (sudo apt-get install zenity), लेकिन मुझे यकीन है कि यह पहले से ही होगा। इसके अलावा, मैं wmctrl (विंडो मैनेजर कंट्रोल) का उपयोग प्रगति संवाद के शीर्षक को बदलने के लिए करता हूं जब यह किया जाता है, तो यह आसानी से इंस्टॉल करने योग्य होता है लेकिन यदि आप नहीं करते हैं तो इससे कोई फर्क नहीं पड़ेगा। मुझे यह देखना अच्छा लगता है कि यह मेरे पैनल में कब किया गया है।
स्क्रिप्ट मूल रूप से एक स्रोत और गंतव्य निर्देशिका के लिए पूछती है, दो का उपयोग करके आकार में स्रोत पर गंतव्य के प्रतिशत की गणना करता है और एक प्रगति बार प्रदर्शित करता है।
नोट: यह केवल पूर्ण निर्देशिका / फ़ाइल सिंकिंग के लिए काम करता है (मैं आमतौर पर इसका उपयोग apt कैश का बैकअप बनाने के लिए करता हूं), इसलिए no --exclude = / file / in / Source-directory विकल्प। गंतव्य निर्देशिका में फ़ाइलें / निर्देशिकाएँ निर्देशिका स्रोत में नहीं हैं, तो भी काम नहीं करेगा। मुझे यकीन नहीं है कि अगर यह दूरस्थ स्रोतों / गंतव्यों के लिए काम करता है तो कभी भी मुझे इसकी आवश्यकता नहीं है या संसाधनों का परीक्षण करने की आवश्यकता नहीं है।
पुनश्च। यह स्क्रिप्ट बहुत बुरी तरह से लिखी जा सकती है या बहुत अक्षम है, (स्क्रिप्ट-कुंवारी यहाँ), लेकिन कम से कम यह इसका उद्देश्य है और निश्चित रूप से आपकी आवश्यकताओं के अनुरूप इसे संपादित करने और इसे बेहतर बनाने के लिए आपका स्वागत है। पीएसएस। इसके अलावा, rsync को मारने के लिए रद्द बटन प्राप्त नहीं कर सका इसलिए मैंने इसे हटा दिया।
#!/bin/bash
set -e;
WELC="Running RsyncP as $USER";
function echo_progress()
{
while (($TRANSFER_SIZE > 1000));
do
DEST_SIZE=$(du -s $DEST_FOLDER | cut -d / -f 1);
((TRANSFER_SIZE=$SOURCE_SIZE-DEST_SIZE));
PROGRESS_PERC=$((DEST_SIZE*100/SOURCE_SIZE));
echo $PROGRESS_PERC;
sleep 0.1s;
done;
echo 100;
zenity --info --width=250 --title=RsyncP --text="File syncing complete!";
}
function get_input()
{
dirs=$(zenity --forms --width=500 --title="RsyncP" --text="Enter source And destination directories" --add-entry="Source: " --add-entry="Destination: " --separator=" ");
SOURCE_FOLDER=$(echo $dirs | cut -d' ' -f 1);
DEST_FOLDER=$(echo $dirs | cut -d' ' -f 2);
OPTIONS=-$(zenity --list --title="RsyncP Options" --text="Select rsync options" --separator='' --height=470 --width=470 --checklist --column "activate" --column "Option" --column "Description" FALSE v "Verbose (Terminal only)" FALSE q "Quiet, supress non-error messages (Terminal only)" FALSE P "Progress (Terminal only)" FALSE a "Archive (lrpog)" TRUE r "Recurse into directories" FALSE p "Preserve permissions" FALSE o "Preserve owner" FALSE g "Preserve group" FALSE l "Copy symlinks as symlinks");
zenity --question --no-wrap --title="RsyncP" --width=500 --text="rsync $OPTIONS $SOURCE_FOLDER $DEST_FOLDER\nDo you want to continue?";
SOURCE_SIZE=$(du -s $SOURCE_FOLDER | cut -d / -f 1);
DEST_SIZE=$(du -s $DEST_FOLDER | cut -d / -f 1);
PROGRESS_PERC=$((DEST_SIZE*100/SOURCE_SIZE));
TRANSFER_SIZE=1001;
}
if [ "$(id -u)" != "0" ]; then
zenity --question --title=RsyncP --text="$WELC, Continue?";
get_input;
rsync $OPTIONS $SOURCE_FOLDER $DEST_FOLDER &
echo_progress | zenity --progress --title=RsyncP --no-cancel --auto-close --text="Copying from \n$SOURCE_FOLDER to \n$DEST_FOLDER" ;
else
zenity --question --title=RsyncP --text="$WELC, Continue?";
get_input;
sudo rsync $OPTIONS $SOURCE_FOLDER $DEST_FOLDER &
echo_progress | zenity --progress --title=RsyncP --no-cancel --auto-close --text="Copying from \n$SOURCE_FOLDER to \n$DEST_FOLDER" ;
fi