Backup com a ferramenta tar
Publicado por Perfil removido (última atualização em 26/12/2018)
[ Hits: 3.171 ]
Download 1545143383.backup.sh (versão 2)
Download 1545414558.backup.sh (versão 3)
Cria backups utilizando a ferramenta tar, que usado para armazenar vários arquivos em um único, preservando informações como datas e permissões. Este script também remove backups antigos criados pelo mesmo, de acordo com o valor definido na variável "time_until_old_backups_are_deleted=3" em dias.
O nome dos arquivos a serem feito o backup deve ser especificado na variável $FILES e a variável $BACKUP_DIR é necessária para informar qual o diretório raiz onde todos os arquivos($FILES) estão.
Versão 2 - Enviado por erick Darko em 18/12/2018
Changelog: O nome dos arquivos a serem feito o backup deve ser especificado na variável $F e a variável $BACKUP_DIR é necessária para informar qual o diretório raiz onde todos os arquivos($F) estão.
Os arquivos podem ficar em qualquer diretório em $HOME
Apenas usuários normais (que não são root) podem executar o script
#!/usr/bin/env bash
SECONDS=0 # -> runtime
trap quit 2
# Setup
FILES=(
"Documents Development .config/i3* .bashrc .vim/vimrc .xinitrc" # <-- change it to your files
)
BACKUP_DIR="/home/$USER/" # Where the $FILES are
############################################################
f="backup_$(date +%H%M_%y%m%d).tar" # the backup.tar file name. Do not change it !
echo -e "\n$(date)" > ${log_path}${f::-4}.log
{ for i in {0..80};do echo -n '-' ;done ; echo; } >> ${log_path}${f::-4}.log
log_path="$(find $HOME -name .backup_logs -type d )"
if [ -z "$log_path" ];then
mkdir $HOME/.backup_logs/; echo "creating .backup_logs/ folder in $HOME."
log_path="$HOME/.backup_logs/"
else
log_path="${log_path}/"
fi
c=0
for i in $FILES;do
BACKUP_PATH[$c]="/home/$USER/"$i
c=$((c+1))
done
echo "files/folders: ${BACKUP_PATH[@]}" >> ${log_path}${f::-4}.log
{ for i in {0..80};do echo -n '-' ;done ; echo; } >> ${log_path}${f::-4}.log
old_backups=($(find $BACKUP_DIR -name "backup_*_*.tar*" -type f -printf '%f\n'))
time_until_old_backups_are_deleted=3 # days
for i in ${old_backups[@]};do
id=$(echo $i | grep -o -P '(?<=.)[0-9]+(?=\.)' | tr -d [:space:])
echo "ID:$id $i" >> ${log_path}${f::-4}.log
y="${id:0:2}" # cut -c1-2 >> year
if [ "${id:2:1}" -le 9 ];then
if [ "${id:2:1}" -eq 1 -a $(date +%m) -ge 10 ];then
m="${id:2:2}" # cut -c3-4 >> month
d="${id:4}"
else
m="${id:2:1}" # cut -c3
d=$(echo ${id:3} | tr -d [:blank:])
fi
fi
if [ $y -eq $(date +%y) ];then
if [ $(date +%d) -ge $((d+time_until_old_backups_are_deleted)) -a $m -le $(date +%m) ];then
rm -vf $i >> ${log_path}${f::-4}.log
fi
else
if [ $(date +%d) -eq $time_until_old_backups_are_deleted -a $(date +%m) -eq 1 ];then
rm -vf $i >> ${log_path}${f::-4}.log
fi
fi
done
{ for i in {0..80};do echo -n '-' ;done ; echo; } >> ${log_path}${f::-4}.log
quit(){
echo ; read -n1 -p "Are you sure you want to leave? [y/n]" answer ; echo
answer=${answer,,}
if [ "${answer:0:1}" == "y" -o ${#answer} -eq 0 ];then
rm -vi ${BACKUP_DIR}$f
cat ${log_path}${f::-4}.log ; rm -v ${log_path}${f::-4}.log
exit 0
fi
}
_HELP_(){
script_path=$(find $HOME -name backup.sh -user 1000)
if [ -z "$script_path" ];then echo "script not found"; else echo "Source: $script_path" ;fi
echo -e """Usage: ./backup
\nCreates backups using the tar tool, which is used to store multiple files in a single file,
preserving information such as dates and permissions.
This script also removes old backups created by it, according to the value
defined in the variable: \"time_until_old_backups_are_deleted = 3\" in days.
The name of the files to be backed up must be specified in the \$FILES variable
and the \$BACKUP_DIR variable and necessary to inform the root directory where
all files in (\$FILES) are.
by erickDarko 2018
"""
exit 0
}
case $1 in
-h) _HELP_ ;;
*) tar cf ${BACKUP_DIR}$f ${BACKUP_PATH[@]} ;;
esac
echo "Size: $(du -sh ${BACKUP_DIR}$f)" >> ${log_path}${f::-4}.log
if [ $? -ne 0 ];then rm -vi ${BACKUP_DIR}$f ;fi
ELAPSED="Elapsed: $(($SECONDS / 3600))hrs $((($SECONDS / 60) % 60))min $(($SECONDS % 60))sec"
echo $ELAPSED >> ${log_path}${f::-4}.log
rsyncdev-pt_BR.sh - Um baixador automático de ISOs de Sabayon Linux
Backup da pasta de usuário em sistemas GNU/Linux sem copiar os arquivos ocultos
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (11)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









