এখানে কিছুটা দেরি হতে পারে তবে ভবিষ্যতের উত্তর সন্ধানকারীরা উপকৃত হতে পারেন।
এটি আমাকেও বাগিয়ে দিচ্ছিল তাই আমি ভেবেছিলাম আমি নীচে নেমে যাব এবং আমার প্রথম স্ক্রিপ্টটি লিখব। প্যাকেজ জেনিটি অবশ্যই ইনস্টল করা উচিত (sudo apt-get ইনস্টল জেনেনি), তবে আমি নিশ্চিত যে এটি সম্ভবত ইতিমধ্যে থাকবে। এছাড়াও, আমি যখন ডগ্রেটিএমটিআরএল (উইন্ডো ম্যানেজার নিয়ন্ত্রণ) ব্যবহার করি তখন এটি শেষ হয়ে গেলে অগ্রগতি ডায়ালগের শিরোনামটি পরিবর্তন করতে এটি সহজেই ইনস্টলযোগ্য তবে আপনি যদি না করেন তবে কোনও পার্থক্য হবে না। আমি আমার প্যানেলে এটি কখন শেষ হয় তা দেখতে চাই।
স্ক্রিপ্টটি মূলত উত্স এবং গন্তব্য ডিরেক্টরি জিজ্ঞাসা করে, du ব্যবহার করে উত্সের চেয়ে গন্তব্যের শতকরা অংশ গণনা করে এবং একটি অগ্রগতি বার প্রদর্শন করে।
দ্রষ্টব্য: এটি কেবলমাত্র সম্পূর্ণ ডিরেক্টরি / ফাইল সিঙ্কের জন্য কাজ করে (আমি সাধারণত এটি অ্যাপ্লিকেশন ক্যাশে ব্যাকআপ তৈরি করতে ব্যবহার করি), সুতরাং --excolve = / file / in / উত্স-ডিরেক্টরি বিকল্প নেই। গন্তব্য ডিরেক্টরিতে যদি ফাইল / ডিরেক্টরি থাকে তবে ডিরেক্টরি ডিরেক্টরিতে কাজ করবে না। আমি নিশ্চিত না যে এটি দূরবর্তী উত্স / গন্তব্যগুলির জন্য কাজ করে যেহেতু এটির পরীক্ষা করার জন্য আমার কখনই এর প্রয়োজন বা সংস্থান ছিল না।
গীত। এই স্ক্রিপ্টটি খুব খারাপভাবে লেখা বা খুব অকার্যকর, (স্ক্রিপ্ট-ভার্জিন) হতে পারে তবে কমপক্ষে এটি তার উদ্দেশ্য হিসাবে কাজ করে এবং অবশ্যই আপনার প্রয়োজন অনুসারে এটি সম্পাদনা এবং উন্নত করতে আপনাকে স্বাগত জানাই। PSS। এছাড়াও, আরএসসিএনকে মেরে বাতিল বোতামটি পেতে পারেনি তাই আমি এটি সরিয়ে দিয়েছি।
#!/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