Podría llegar un poco tarde aquí, pero los futuros buscadores de respuestas podrían beneficiarse.
Esto también me estaba molestando, así que pensé en ensuciarme y escribir mi primer guión. El paquete zenity debe estar instalado (sudo apt-get install zenity), pero estoy seguro de que probablemente ya esté allí. Además, uso wmctrl (control del administrador de ventanas) para cambiar el título del cuadro de diálogo de progreso cuando está hecho, es fácilmente instalable pero no hará la diferencia si no lo hace. Solo me gusta ver cuándo está hecho en mi panel.
El script básicamente solicita un directorio de origen y destino, calcula el porcentaje del destino sobre el tamaño del origen utilizando du y muestra una barra de progreso.
Nota: Esto solo funciona para la sincronización completa de directorio / archivo (generalmente lo uso para hacer copias de seguridad de la memoria caché de apt), por lo que no hay opción --exclude = / file / in / Source-directory. Tampoco funcionará si hay archivos / directorios en el directorio de destino que no están en el directorio de origen. No estoy seguro de si funciona para fuentes / destinos remotos ya que nunca he tenido la necesidad o los recursos para probarlo.
PD. Este script puede estar muy mal escrito o muy ineficiente (script-virgin aquí), pero al menos sirve para su propósito y, por supuesto, puede editarlo y mejorarlo para satisfacer sus necesidades. PSS Además, no pude obtener el botón cancelar para matar a rsync, así que lo eliminé.
#!/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