【问题标题】:Bash Backup Script Progress BarBash 备份脚本进度条
【发布时间】:2015-03-26 23:32:50
【问题描述】:

我正在创建一个 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

【问题讨论】:

  • 如果您知道或可以估计(使用dufind)文件的大小或数量,有一个名为pv 的可安装工具,它可以绘制漂亮的进度条以及剩余时间。

标签: bash shell tar


【解决方案1】:

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

rsync --progress ...

【讨论】:

    猜你喜欢
    • 2017-06-08
    • 2021-07-27
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    相关资源
    最近更新 更多