Backup com a ferramenta tar
Publicado por Perfil removido (última atualização em 26/12/2018)
[ Hits: 2.887 ]
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
rotate.sh - Rotaciona arquivos de acordo com a data
Configuração de backup com rsync sem senha
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
É cada coisa que me aparece! - não é só 3% (1)
Alguma pessoa pode me ajudar com drriver Core i3 7020u (Debian 12)? (2)
Mikrotik não mostra bytes nem packtes (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código [RESOLVID... (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta