Peut-être un peu tard ici, mais les futurs demandeurs de réponses pourraient en bénéficier.
Cela m'ennuyait aussi, alors j'ai pensé que je devrais me salir et écrire mon premier script. Le paquet zenity doit être installé (sudo apt-get install zenity), mais je suis sûr qu'il le sera probablement déjà. De plus, j'utilise wmctrl (contrôle du gestionnaire de fenêtres) pour changer le titre de la boîte de dialogue de progression, une fois celle-ci terminée. Il est facile à installer, mais ne changera rien si vous ne le faites pas. J'aime juste voir quand c'est fait dans mon panel.
Le script demande en gros un répertoire source et un répertoire de destination, calcule le pourcentage de la destination par rapport à la source en utilisant du et affiche une barre de progression.
Note: Ceci ne fonctionne que pour la synchronisation complète de répertoire / fichier (je l'utilise généralement pour faire des sauvegardes de cache d'apt), donc pas d'option --exclude = / file / in / répertoire-source. Cela ne fonctionnera pas non plus s'il y a des fichiers / répertoires dans le répertoire de destination, pas dans le répertoire source. Je ne sais pas si cela fonctionne pour les sources / destinations distantes car je n'en ai jamais eu besoin ni des ressources pour le tester.
PS Ce script peut être très mal écrit ou très inefficace (script-vierge ici), mais au moins il remplit son objectif et vous pouvez bien sûr l'éditer et l'améliorer pour l'adapter à vos besoins. PSS. En outre, impossible d'obtenir le bouton d'annulation pour tuer rsync alors je l'ai simplement supprimé.
#!/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