Bash 备份脚本进度条

Bash Backup Script Progress Bar

我正在创建一个 bash 脚本来备份用户指定的目录。程序运行的那一刻,用户会看到屏幕上的所有文件都在被压缩和复制,有没有时间用一个简单的进度条来简单地代替用户看到的?

#!/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

如果您使用 rsync 复制文件,您可以使用 --progress 参数获得进度条。

rsync --progress ...