මෙහි ටිකක් ප්රමාද විය හැකි නමුත් අනාගත පිළිතුරු සොයන්නන්ට ප්රයෝජන ලැබිය හැකිය.
මෙය මට ද කරදරයක් වූ නිසා මම සිතුවේ මම බැස අපිරිසිදු වී මගේ පළමු පිටපත ලිවීමට සිතුවෙමි. පැකේජයේ ශුන්යතාවය ස්ථාපනය කළ යුතුය (sudo apt-get install zenity), නමුත් මට විශ්වාසයි එය දැනටමත් එහි ඇති බව. ප්රගති සංවාදයේ මාතෘකාව වෙනස් වූ විට එය වෙනස් කිරීමට මම wmctrl (කවුළු කළමනාකරු පාලනය) භාවිතා කරමි, එය පහසුවෙන් ස්ථාපනය කළ හැකි නමුත් ඔබ එසේ නොකළහොත් වෙනසක් සිදු නොවේ. මම කැමතියි එය මගේ පුවරුවේ සිදු වූ විට.
ස්ක්රිප්ට් මූලික වශයෙන් ප්රභවයක් සහ ගමනාන්ත නාමාවලියක් ඉල්ලා සිටින අතර, ඩු භාවිතා කරමින් ප්රභවයට වඩා ගමනාන්තයේ ප්රතිශතය ගණනය කර ප්රගති තීරුවක් පෙන්වයි.
සටහන: මෙය ක්රියාත්මක වන්නේ සම්පූර්ණ ඩිරෙක්ටරි / ගොනු සමමුහුර්ත කිරීම සඳහා පමණි (මම සාමාන්යයෙන් එය භාවිතා කරන්නේ apt හැඹිලියේ උපස්ථ සෑදීම සඳහාය), එබැවින් --exclude = / file / in / Source-directory විකල්පයක් නොමැත. ප්රභව නාමාවලියෙහි නොමැති ගමනාන්ත නාමාවලියෙහි ගොනු / නාමාවලි තිබේ නම් එය ක්රියා නොකරනු ඇත. දුරස්ථ ප්රභවයන් / ගමනාන්තයන් සඳහා එය ක්රියාත්මක වේදැයි මට විශ්වාස නැත, මන්ද එය කිසි විටෙකත් මට අවශ්ය නොවීය.
පීඑස්. මෙම ස්ක්රිප්ට් එක ඉතා නරක ලෙස ලියා හෝ ඉතා අකාර්යක්ෂම විය හැකිය, (මෙහි ස්ක්රිප්ට්-කන්යා), නමුත් අවම වශයෙන් එය එහි අරමුණ ඉටු කරයි. ඇත්ත වශයෙන්ම ඔබේ අවශ්යතාවන්ට සරිලන පරිදි එය සංස්කරණය කර වැඩිදියුණු කිරීමට ඔබව සාදරයෙන් පිළිගනිමු. පීඑස්එස්. එසේම, rsync kill ාතනය කිරීමට අවලංගු කිරීමේ බොත්තම ලබා ගත නොහැකි වූ නිසා මම එය ඉවත් කළෙමි.
#!/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