Backup com a ferramenta tar
Publicado por Perfil removido (última atualização em 26/12/2018)
[ Hits: 3.219 ]
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
Backup-Menu - Backup com menu de ajuda, sair e fazer backup
Backup e envio do arquivo + md5sum para o FTP da escolha do usuário
Backup Database MySQL Automatizado
Nenhum comentário foi encontrado.
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
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









