Backup e Upload com Zsh
Nos dias de hoje, o backup e a sincronização de dados tornaram-se aspectos cruciais para a manutenção de nossas vidas digitais. Quer se trate de projetos pessoais, documentos de trabalho ou fotos de família, é fundamental garantir que nossos dados estejam seguros e facilmente acessíveis.
No tutorial de hoje, apresentarei um conjunto de scripts personalizados projetados para automatizar o processo de backup e upload de um diretório específico. Esses scripts, escritos em Zsh e Bash, utilizam ferramentas poderosas como rsync, tar e rclone para agilizar suas tarefas de backup e upload.
Olhando de perto
Script de Backup: do_backup.zsh
Nossa jornada começa com o script do_backup.zsh, um companheiro confiável para criar backups de seus diretórios especificados.
Ele emprega rsync para espelhar arquivos do diretório de origem para um local de backup designado, seguido por uma compactação em um arquivo .tar.gz organizado. Este script não trata apenas de copiar arquivos; trata-se de proteger seus dados com o mínimo de esforço.
#!/usr/bin/env zsh
# Script Name: backup.zsh
# Author: Pablo Andrade
# Created: 28/11/2023
# Version: 1.2
# To decompress
#tar -xzvf $bkp_file
# Debugging ON/OFF
set -x
#script_path="$(dirname "${BASH_SOURCE[0]}")"
# Variables
project_directory="/home/pablodeas/Workspace/Projects/pessoal/do_backup"
source "$project_directory/config.sh"
# Remove Last Backup File
function remove_last () {
echo " --- "
echo "-> Removing last Backup File!..."
echo " --- "
/usr/bin/rm -f $bkp_last
if [ $? -eq 0 ]; then
echo $msg_sucess
else
echo $msg_error
fi
}
# Backup
function exec_bkp () {
echo " --- "
echo "-> Starting Backup..."
echo " --- "
rsync -av --progress --partial --append-verify $main_dir $bkp_dir &> $project_log/rsync_$data.log
if [ $? -eq 0 ]; then
echo $msg_sucess
else
echo $msg_error
fi
}
# Compress
function exec_compact () {
echo " --- "
echo "-> Starting Compression..."
echo " --- "
tar --remove-files -czvf $bkp_file * &> $project_log/tar_$data.log
if grep -q "File shrank by" $project_log/tar_$data.log; then
echo "-> Alert: The file was compressed Successfully, but there was an alert."
elif [ $? -eq 0 ]; then
echo $msg_sucess
else
echo $msg_error
fi
}
# Execution
#1
remove_last
#2
exec_bkp
cd $bkp_dir
#3
exec_compact
Características principais:
- Backup Eficiente: Utiliza
rsyncpara garantir um processo de backup rápido e eficiente. - Compressão: Reduz o tamanho dos seus backups com a compressão
.tar.gz. - Registro: mantém um registro do processo de backup para referência futura.
Como usá-lo:
- Configuração: Certifique-se de que seu arquivo
config.shesteja configurado corretamente com os caminhos para seus diretórios de origem e de backup. - Execução: Torne o script executável com
chmod +x do_backup.zshe execute-o com./do_backup.zsh.
Script de Upload: do_upload.zsh
Seguindo o processo de backup, temos o script do_upload.zsh, que se encarrega de enviar seu arquivo de backup compactado para um local de armazenamento remoto.
Compatível com qualquer armazenamento remoto suportado por rclone, este script simplifica o processo de movimentação de seus backups para a nuvem.
#!/bin/zsh
# Script Name: do_upload.sh
# Author: Pablo Andrade
# Created: 07/12/2023
# Version: 0.2
# Debugging ON / OFF
#set -x
# Variables
#script_path="$(dirname "${BASH_SOURCE[0]}")"
project_directory="/home/pablodeas/Workspace/Projects/pessoal/do_backup"
source "$project_directory/config.sh"
# Upload
func exec_upload () {
echo "-> Starting Upload..."
rclone copy $bkp_dir $remote:/Backups/ -vv &> $project_log/rclone_$data.log
if [ $? -eq 0 ]; then
echo $msg_sucess
else
echo $msg_error
fi
}
# Execution
exec_upload
Características principais:
- Upload remoto: aproveita o
rclonepara enviar seu arquivo de backup para uma solução de armazenamento remoto de sua escolha. - Logging: Fornece logs do processo de upload, garantindo transparência.
Começando:
- Configuração: Atualize seu arquivo
config.shcom os detalhes de armazenamento remoto necessários. - Preparação: Execute
chmod +x do_upload.zshpara tornar o script executável. - Executar: Basta executar
./do_upload.zshpara iniciar o processo de upload.
Nos Bastidores: Configuração e Dependências
Ambos os scripts dependem de um arquivo de configuração compartilhado, config.sh, que contém informações essenciais, como caminhos de diretório de origem e de backup, nomes de arquivos de backup e configurações de armazenamento remoto. Essa abordagem centralizada simplifica o gerenciamento de seus processos de backup e upload.
Além disso, os scripts dependem de diversas ferramentas:
- Zsh e Bash: as linguagens de script usadas para escrever os scripts.
- rsync: Essencial para o processo de backup.
- tar: Usado para compactar os arquivos de backup.
- rclone: Facilita o processo de upload para armazenamento remoto.
Antes de mergulhar nos scripts, certifique-se de que todas as dependências estejam instaladas e configuradas corretamente. Esta configuração permitirá que você automatize suas tarefas de backup e upload, economizando tempo e reduzindo o risco de perda de dados.
Obrigado por lerem até aqui.
Para entrar em contato comigo, utilize qualquer um dos links abaixo: