Backup com a ferramenta tar
Publicado por Perfil removido (última atualização em 26/12/2018)
[ Hits: 3.240 ]
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
DriveTool.sh: um script para cópia rápida e segura de arquivos para unidades flash USB
BTRFS - Gerenciamento de snapshot por quantidade
Script para gravação de BKPs em DVDs-RW
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Script de montagem de chroot automatica
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux









