0
respostas

[Sugestão] Atividade 5 - Minha solução

Boa noite!

Criei a shell abaixo, que recebe como input o diretório a ser backupado e o diretório onde guardar o BKP.
Caso o diretório onde guardar o BKP não existe, o diretório é criado.
O nome do arquivo de backup contem todo o caminho do diretório original, substituendo " / " com " _ ".

#! /bin/bash

read -p 'BKP de qual diretório? ' caminho
read -p 'Onde guardar o BKP? ' bkp

data=$(date +"%Y%m%d_%H%M%S")
name=$(echo "$caminho" | tr '\/' '_')

if [ ! -d "$caminho" ]; then
   echo "Diretório $caminho não existe"
   exit 1
fi

if [ ! -d "$bkp" ]; then
   mkdir "$bkp"
   echo "Diretorio de BKP $bkp criado"
fi

tar -czf "$bkp"/BKP_"$name"_"$data".tar.gz "$caminho"

Exemplo de execução (é possível ver que apenas durante a primeira execução é criada a pasta que contem os backups)

root@DESKTOP-JHEH44T:~/devops# cd 04.07.Prática/
root@DESKTOP-JHEH44T:~/devops/04.07.Prática# ./05.BKP_gzip.sh
BKP de qual diretório? /root/devops/03.08.Prática
Onde guardar o BKP? /root/devops/BKP
Diretorio de BKP /root/devops/BKP criado
tar: Removing leading `/' from member names
root@DESKTOP-JHEH44T:~/devops/04.07.Prática# ./05.BKP_gzip.sh
BKP de qual diretório? /root/devops/03.08.Prática20260313_230010
Onde guardar o BKP? /root/devops/BKP
tar: Removing leading `/' from member names
root@DESKTOP-JHEH44T:~/devops/04.07.Prática# cd /root/devops/BKP
root@DESKTOP-JHEH44T:~/devops/BKP# ls -ltr
total 8
-rw-r--r-- 1 root root 710 Mar 15 23:56 BKP__root_devops_03.08.Prática_20260315_235636.tar.gz
-rw-r--r-- 1 root root 348 Mar 15 23:57 BKP__root_devops_03.08.Prática20260313_230010_20260315_235739.tar.gz

Onde 03.08.Prática e 03.08.Prática20260313_230010 são dois diretórios localizados na pasta devops