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 

https://blogger.googleusercontent.com/img/a/AVvXsEhpAosU9eigUPy5y3CA1nnuM5iJ_jKpqbWfmlX64STM719j4H3z1MxSzcQZESICaq9UpuVGf-bg-vuyt5GYPO2e5DIw6giBO6V_jrnPU7baPhn--Zef4kt6geqS66g1ODUNNIfaYeSnKojwbT_SkcD9ZZXWe6cb90rBzP6BfRaahpsdtUlEmbPpwhGp674W

INÍCIO

Mais lidas: