2015-03-26 4 views
0

Я создаю сценарий bash, который будет создавать резервную копию каталога, указанного пользователем. В тот момент, когда программа запускается, пользователь увидит, что все файлы на экране сжаты и скопированы, есть ли время, чтобы просто заменить то, что пользователь видит с помощью простого индикатора выполнения?Bash Backup Script Progress Bar

#!/bin/bash 

ROOT="/Users/Rory/Documents" 
ROOT_EXCLUDE="--exclude=/dev --exclude=/proc --exclude=/sys --exclude=/temp --exclude=/run --exlucde=/mnt --exlcude=/media --exlude" 
DESTIN="/USer/Rory/Documents" 

if [ "$USER" != "root" ]; then 
    echo "You are not the root user" 
    echo "To use backup please use: sudo backup" 
    exit 
fi 

clear 

BANNER1="************************************************" 
BANNER2="********* Backup Menu **************************" 
BANNER3 ="************************************************" 

echo $BANNER1 
echo $BANNER2 
echo $BANNER3 
echo $BANNER3 


OPTIONS="BACKUP DESTINATION EXIT" 
LIST="1)BACKUP 2)SET DESTINATION 3)EXIT" 

select opt in $OPTIONS; do 
if [ "$opt" = "EXIT" ]; then 
    echo "GOODBYE!" 
    clear 
    exit 

elif [ "$opt" = "BACKUP" ]; then 
    echo "BACKING UP FILES..." 
    tar cvpfz $DESTIN/backup.`date +%d%m%y_%k%M`.tgz $ROOT $ROOT_EXCLUDE_DIRS 
    echo "BACKUP COMPLETE" 
    exit 

elif [ "$opt" = "DESTINATION"]; then 
    echo "DESTINATION IS $DESTIN/backup.`date +%d%m%y_%k%M`.tgz " 
    echo "TO CHANGE ENTER THE NEW DESTINATION..." 
    echo "TO LEAVE IT AS IS JUST PRESS ENTER..." 
    read NEW_DESTIN 

    #IF GREATER THEN 0 ASSIGN NEW DESTINATION 
    if [ ${#NEW_DESTIN} -gt 0 ]; then 
     DESTIN = "$NEW_DESTIN" 
    fi 
    clear 
    echo $BANNER1 
    echo $BANNER2 
    echo $BANNER3 
    echo $LIST 

else 
    clear 
    echo "BAD INPUT!" 
    echo "ENTER 1 OR 2..." 
    echo $LIST 
fi 
done 
+2

Если вы знаете или можете оценить (с помощью '' du' или find') размера или количества файлов, есть устанавливаемая инструмент под названием 'pv', который рисует довольно бары прогресса в течение всех и оставшееся времени. –

ответ

1

Если вы копируете свои файлы с помощью rsync, вы можете получить индикатор выполнения, используя параметр --progress.

rsync --progress ...