Postagem em destaque

MEU REFÚGIO NERD - ATUALIZAÇÃO DE LINKS DO PROJETO

OlĂĄ! Fizemos um pequeno ajuste no projeto e precisamos atualizar todos os links do projeto. NĂŁo se preocupem. Nenhum conteĂșdo serĂĄ movido ou...

quarta-feira, 22 de novembro de 2023

LINUX - CRIANDO BACKUP DA PASTA DO USUÁRIO DA HOME

LINUX - CRIANDO BACKUP DA PASTA DO USUÁRIO DA HOME

 

Quem nunca se deparou com uma situação de perda de arquivos...perda atĂ© massiva...morte de um HD ou SSD? Recentemente tive essa experiĂȘncia justamente num momento em que estava demorando para fazer backups de arquivos pessoais e de trabalho. Resultado?

 Um estrago incalculĂĄvel. Ainda tive algumas coisas que amenizaram. Backup recente de ferramentas de trabalho e um backup completo do sistema, o que me permitiu rapidamente restaurar o sistema num SSD interno ainda que de forma provisĂłria(esse SSD Ă© muuuito menor). De resto...foi perda total...muita coisa importante mesmo. Nessas horas acabo tendo preferĂȘncia pelos HDDs mecĂąnicos convencionais, mesmo que seja somente para realizar os backups crĂ­ticos e nĂŁo usar para rodar o sistema operacional, jogos, etc...

EntĂŁo vamos ao motivo desse post.


CRIAR ROTINA DE BACKUPS

Antes de ter essa experiĂȘncia pra lĂĄ de traumĂĄtica tinha hĂĄbito de fazer backups bem manuais, selecionando o que considerava importante e copiando para mĂ­dias diferentes da original(mesmo que o SSD ou HDD tenha uma partição destinada a backups).

Isso me incomodou tanto...mas tanto que tenho passado os Ășltimos dias criando script e incrementando o dito cujo para as minhas necessidades. 

EntĂŁo, tenha em mente que Ă© necessĂĄrio fazer backup regularmente e que nĂŁo adianta salvar sempre no mesmo lugar. Acredite em mim...as chances de dar uma encrenca federal sĂŁo bem grandes. Diversifique pra nĂŁo ficar na mĂŁo.


SCRIPTS PODEM AJUDAR

Como disse antes, costumava fazer as cópias de segurança na mão, selecionando os arquivos de diretórios e copiando para outros destinos. Isso pode ser bem cansativo.

Se as tarefas sĂŁo repetitivas e previsĂ­veis vocĂȘ pode automatizĂĄ-las utilizando scripts(Shell scripts...em Python...etc...).

Se vocĂȘ sabe de onde para onde jĂĄ tem uma parte que pode automatizar. TambĂ©m se o backup serĂĄ compactado. TambĂ©m pode automatizar essa tarefa.

Mais Ă  frente vou mostrar como isso pode ser feito.


AGENDAR AS TAREFAS

Assim como vocĂȘ mesmo pode ter o hĂĄbito da regularidade, vocĂȘ pode fazer com que o script que criou para agilizar essas tarefas seja executado dentro de um perĂ­odo esperado e regular. Caso vocĂȘ se esqueça o sistema poderĂĄ rodar o script de geração do backup automaticamente. Para isso vocĂȘ pode usar o cron. Veja um exemplo:

Digite ctrontab -e (como root)

Vai abrir um arquivo de texto para vocĂȘ adicionar um evento e definir com que regularidade esse evento ocorrerĂĄ.

Exemplo:

30 11 * * * /usr/local/bin/backup-home.sh
30 20 * * * /usr/local/bin/backup-home.sh

No exemplo acima colocamos o script 'backup-home.sh' para rodar na primeira tentativa 11:30 da manhĂŁ todos os dias e 20:30 todos os dias na segunda tentativa.

EXEMPLO DE SCRIPT DE BACKUP DA HOME/USER

Antes de mostrar o script para vocĂȘs, devo dizer que ele deve ser estudado antes de ser usado. Entenda o script antes de usar. Outra coisa, vai notar que tem '/media/user' e 'user' nele. É para mudar para a sua realidade aĂ­(exemplo: caminho para a pasta de backup e caminho para a pasta temporĂĄria). Isso tambĂ©m vale para os armazenamentos extras ao final do script. NĂŁo Ă© muito complicado. Basta ler o script e modificar para o que vocĂȘ tem aĂ­. Pegue as ideias e ajuste para as suas necessidades.

Vamos ao script:

###############################################

#!/bin/bash
#Script criado por Luke do canal Meu RefĂșgio Nerd
#Não se esqueça de mencionar o autor nas suas modificaçÔes caso queira publicar
#Script para gerar backup compactado da home do usuĂĄrio

#modifique para os pontos de montagem que vocĂȘ vai usar
# Diretório temporårio para a operação
temp_backup_dir="/media/user/armazenamento1/temp-backup-home"

# DiretĂłrio final dos backups
backup_dir="/media/user/armazenamento1/Backup-da-Home"

# Caminho do arquivo de log
log_file="/var/log/backup-home.log"

echo 'ZERANDO ARQUIVO DE LOG'
sleep 3

#zerando arquivo de log
> /var/log/backup-home.log

# Redireciona stdout e stderr para o arquivo de log
exec > >(tee -ia "$log_file")
exec 2>&1

echo 'VERIFICANDO EXISTÊNCIA DE DIRETÓRIOS IMPORTANTES'
sleep 5

# Verifica se o diretĂłrio temporĂĄrio existe
if [ ! -d "$temp_backup_dir" ]; then
    # Cria o diretĂłrio temporĂĄrio se nĂŁo existir
    mkdir -p "$temp_backup_dir"
else
    # Remove conteĂșdo do diretĂłrio temporĂĄrio se existir
    rm -rf "$temp_backup_dir"/*
fi


# Verifica se o diretĂłrio de backup principal existe
if [ ! -d "$backup_dir" ]; then
    # Cria o diretĂłrio temporĂĄrio se nĂŁo existir
    mkdir -p "$backup_dir"
else
ls $backup_dir
fi


echo 'INICIANDO CÓPIA DE ARQUIVOS'
sleep 5

# Realiza a cĂłpia dos arquivos para o diretĂłrio temporĂĄrio
rsync -av --exclude=.cache --exclude=.local/share/Steam --exclude=.local/share/icons /home/user/ "$temp_backup_dir/user"

echo 'CORRIGINDO PERMISSÕES DOS ARQUIVOS COPIADOS'
sleep 5

# Corrija as permissÔes de propriedade
chown -R user:user "$temp_backup_dir"

echo 'INICIANDO A COMPACTAÇÃO DO BACKUP'
sleep 5

# Compacta o backup dentro da pasta Backup-da-Home
tar -cvzf "$backup_dir/backup-home-$(date +%d-%m-%Y).tar.gz" -C "$temp_backup_dir/user/.." "$(basename "user")"


echo 'REMOVENDO BACKUPS ANTIGOS COM MAIS DE 7 DIAS'
sleep 5

# Remove backups antigos dentro da pasta Backup-da-Home
find "$backup_dir" -type f -name "backup-home-*.tar.gz" -mtime +7 -exec rm {} \;

# Log da operação
echo "$(date '+%Y-%m-%d %H:%M:%S') - Backup da home do usuĂĄrio realizado com sucesso" >> "$log_file"

echo 'REMOVENDO ARQUIVOS TEMPORÁRIOS'
sleep 5

# Remove o conteĂșdo do diretĂłrio temporĂĄrio
rm -rf "$temp_backup_dir"

echo 'CRIANDO CÓPIAS ADICIONAIS POR SEGURANÇA'
sleep 5

#criando copias adicionais

#modifique para os pontos de montagem que vocĂȘ vai usar
mkdir  /media/user/armazenamento2/Backup-da-Home/
mkdir  /media/user/armazenamento3/Backup-da-Home/
mkdir  /media/user/armazenamento4/Backup-da-Home/

cp -v -f /media/user/armazenamento1/Backup-da-Home/backup-home-*.tar.gz /media/user/armazenamento2/Backup-da-Home/
cp -v -f /media/user/armazenamento1/Backup-da-Home/backup-home-*.tar.gz /media/user/armazenamento3/Backup-da-Home/
cp -v -f /media/user/armazenamento1/Backup-da-Home/backup-home-*.tar.gz /media/user/armazenamento4/Backup-da-Home/

echo 'OPERAÇÃO DE BACKUP DA HOME/USER FINALIZADO'

#############################################################################

FINALIZANDO

Seria legal aprender somente na observação e não passando por isso. Mas ninguém estå livre de imprevistos. Como dizem os antigos: "um cara precavido vale por dois".

Lembrando que essa Ă© sĂł uma parte. Se quiser fazer backup do sistema tem um tutorial que publiquei aqui no blog. Vou deixar os links mais abaixo para vocĂȘs. Devido a essa experiĂȘncia fiz a restauração totalmente na mĂŁo. EntĂŁo, pode ser que o prĂłximo passo seja criar um script de instalação(leia o post que vou botar mais abaixo para entender) e um de restore para o que tratamos nesse post aqui.

Bom..."melhor prevenir do que remediar". Espero que tenham gostado e que tenha ajudado.

Mencionado nesse post:

https://www.meurefugionerd.com/2023/08/criar-pendrive-bootavel-a-partir-do-sistema-instalado.html

Gostou?

Inscreva-se no  meu canal:

@MeuRefugioNerd

Paga um cafezinho para mim?
https://livepix.gg/meurefugionerd 

INÍCIO

Mais lidas: