Я пытаюсь создать сценарий Bash, который делает резервное копирование моих важных файлов в домашней папке однажды каждую неделю. Я еще не добрался до crontab части, но я пытался заставить этот индикатор выполнения работать. Я хочу знать, сколько времени я должен ожидать того, пока это не сделано. Я не хочу просто помещать эхо "Process ongoing, please wait"
. Помогите
Код Bash:
TODAY=$(date +%d-%m-%Y)
echo $TODAY
file="Exist_or_Not.txt"
type pv > $file
if grep -q "pv" $file; then
echo "exists"
else
echo "Installing pv for progress bar"
sudo apt install pv
fi
#SIZE='du -sk /home/user/{Desktop,Documents,Downloads} | cut -f 1'
sudo tar -pczf /media/backups/backup${TODAY}.tar.gz /home/user/Desktop /home/user/Documents /home/user/Downloads | pv -s 40978228k > /dev/null
Я получил это 40978228k путем вычисления того, что я получил от $SIZE в Python. Подведенный итог эти числа, num1 + цифра 2 + num3, потому что ${SIZE}k
не работал. Это продолжало говорить pv: -s: integer argument expected
Править: Полный код, работая!
#!/bin/bash
TODAY=$(date +%d-%m-%Y)
f="tekst.txt"
type pv > $f
if grep -q "pv" $f; then
echo "PV exists"
else
echo "Installing PV..."
sudo apt install pv
fi
f2="home_backup${TODAY}.tar.gz"
echo "Your username is: $(whoami)"
echo "1) Backup your home directory"
echo "2) Extract your backup"
read -p "Choose the option: " choice
if [ -z $choice ]; then
echo "Choose the option"
continue
elif [ $choice -eq 1 ]; then
echo "Backup directory: /media/backup/"
sleep 1
echo "Backup Process Activated"
sudo tar -cf - /home/$(whoami) -P | pv -s $(du -sb /home/$(whoami) | awk '{print $1}') | gzip > /media/extracted/$f2
elif [ $choice -eq 2 ]; then
echo "Extracting your backupped home directory from /media/backup/"
echo "Extracted directories go to /media/extracted/"
sleep 1
echo "Extraction Process Activated"
pv /media/extracted/$f2 | sudo tar -xzf - -C /media/extracted/
fi