O que devo incluir e excluir com o rsync para fazer backup do sistema?

4

Passei o dia todo experimentando com rsync exclude-from e include-from , sem sucesso e completamente perdido. Nenhum dos exemplos ou ajuda que eu posso encontrar responde a minha exigência exata, mas muito simples, e, ou eu não posso fazê-los funcionar, ou eu não obtenho o resultado que quero, nem posso entender o porquê.

Estou tentando configurar um backup diário automático e, depois de algumas tentativas de dias anteriores, com base em este site muito bom , que eu segui de perto para backups incrementais, e tudo funcionando bem em testes, eu cheguei ao estágio de um dry-run apenas do meu diretório / home / Harry, sem excluir-de e incluir-de, e também funciona bem. Eu também tenho os trabalhos cron classificados que irão executá-lo para mim.

Antes que alguém sugira usar outro que não seja rsync e cron, observe que eu estarei cronometrando isso para ser executado diariamente às 11:30 da noite, com o computador desligando alguns minutos depois. Isso também funciona bem em testes. Se o computador não estiver ligado nesse momento, isso não será importante, pois não haverá nada para fazer backup naquele dia.

Para progredir mais, e usando as recomendações em "Um Guia Prático para o Fedora e o Red Hat LInux", por Mark Sobell, 7ª edição, página 607, e outras fontes que eu quero refinar para incluir /home/ , /var/ , /usr/local/ e /etc/ ; e exclui /tmp/ , /var/tmp/ , /usr/tmp/ , /proc/, / sys / e /var/cache/ .

Por favor: em primeiro lugar, essas listas sensatas? e segundo: Como especifico este requisito na minha chamada rsync?

Adicionado depois que minha pergunta foi respondida.

Obrigado a todos que responderam à minha pergunta original, agora tenho uma solução em funcionamento, listada no script abaixo. Minhas experiências podem ser úteis para qualquer um que tente algo parecido, e Michael Horner solicitou que eu mostrasse as coisas que deram errado. Por favor, consulte o site citado para uma descrição completa de como o ciclo funciona, com um mínimo de espaço de armazenamento necessário.

Minhas avaliações anteriores são, de certa forma, gravadas em linhas comentadas no script, que é o que usei para meus testes, originalmente para fazer backup de alguns arquivos de teste e depois tentar fazer o backup em discos rígidos externos . Minha prática é que, quando eu mudo alguma coisa, eu registro a mudança retendo e comentando o original, para que eu possa voltar a ele novamente, se necessário.

O identificador longo que inicia o CA6 é para um disco rígido externo de um Terabyte no qual pretendo armazenar backups diários, provavelmente com um ciclo de 10 dias. Eu também tenho uma unidade de 750 Gigabytes para backups semanais com provavelmente um ciclo anual. Você verá, perto do final do roteiro, que esse ciclo ainda precisa ser assistido.

Não estou preocupado com a necessidade de restaurar o sistema exatamente se houver uma falha. Eu tive três computadores anteriores, nenhum deles falhou, mas eu mantive backups manuais em discos rígidos externos e os uso, agora, como uma fonte para qualquer material que eu ainda precise. Então eu começaria com uma instalação simples e adicionaria o que eu preciso, conforme necessário.

Como sugerido na minha pergunta, experimentei usar rsync exclude-from e include-from , mas não consegui pegar o jeito do formato dos arquivos necessários. Eu poderia tentar colocar a longa lista em um arquivo, mais tarde.

#!/bin/bash
# Adapted from: http://webgnuru.com/linux/rsync_incremental.php
#  Website Backup Script
#======================================================================
# Define Variables
# Todays date in ISO-8601 format e.g. 2013-10-19:
DAY0='date -I' 
# Yesterdays date in ISO-8601 format:
DAY1='date -I -d "1 day ago"'
# The source directory:
SRC="/home/Harry/testrsync/bravo/"
#SRC="/home/Harry/"
# Filename of list of files to include
INC="/home/Harry/testrsync/include"
# Filename of file list to exclude
EXC="/home/Harry/testrsync/exclude"
# The target directory:
#TRG="/home/Harry/testrsync/backups/$DAY0"
TRG="/run/media/Harry/CA6C321E6C32062B/annals/$DAY0"
# The link destination directory:
#LNK="/home/Harry/testrsync/backups/$DAY1"
LNK="/run/media/Harry/CA6C321E6C32062B/$DAY1"
# The log file
#LOG="--logfile="/home/Harry/testrsync/backups/bulog --log-file-format="%t\n";""
LOG="--log-file=/home/Harry/testrsync/backups/bulog"
#The rsync options:
#OPT="--dry-run -avh --delete --link-dest=$LNK"
OPT="-aAXvh --delete --link-dest=$LNK"
#OPT="-ah --delete --link-dest=$LNK"
#======================================================================
#Execute the backup
#rsync -avvv $OPT --include-from=$INC --exclude-from=$EXC $SRC $TRG $LOG
#rsync -avv $OPT --include-from=$INC $SRC $TRG $LOG
#rsync $OPT--delete --stats --exclude-from=$EXC /home/Harry /var /usr/local /etc $TRG $LOG
rsync $OPT --exclude {"/dev/*","/proc/*","/sys/*","/tmp/*","/usr/tmp/*","/run/*","/mnt/*","/media/*","/var/cache/*","var/tmp/*","/","/lost+found"} /* $TRG $LOG
#Delete old backups cyclically
# for my tests I am going to use a three day cycle
DAY4='date -I -d "4 days ago"'
#Delete the backup from 4 days ago, if it exists
if [ -d /home/Harry/testrsync/backups/$DAY4 ]
then
rm -r /home/Harry/testrsync/backups/$DAY4
#rm -r /run/media/HarryCA6C321E6C32062B/$DAY4
fi
# Cron does not output to a screen, so no result from next line
# zenity --info --text='Backup complete' --title="Backup Test"
    
por Harry Weston 30.09.2014 / 20:39

3 respostas

2

Assim, o arquivo - exclude-from será:

var/tmp/
var/cache/

e use o rsync assim:

rsync -aAv --delete --stats --exclude-from /excludes /home /var /usr/local /etc /Backup/
    
por 30.09.2014 / 21:01
2

Inclua / (o sistema de arquivos raiz) e inclua a raiz de qualquer outro sistema de arquivos do qual você deseja fazer backup (por exemplo, se /home estiver em uma partição separada, inclua-o também). Use a opção -x para excluir todos os outros sistemas de arquivos: sistemas de arquivos na memória como /proc e /sys , mídia removível montada, sistemas de arquivos remotos, etc.

Exclua os arquivos dos quais você não deseja fazer backup. /tmp é um candidato comum, talvez também /var/tmp , alguns diretórios em /var/cache , etc.

O espaço de backup é caro, portanto, talvez você não queira fazer backup de arquivos restaurados facilmente, como programas instalados a partir de pacotes. Portanto, você deve excluir /usr , exceto /usr/local . Consulte filtro Rsync: copiando apenas um padrão para um guia introdutório para incluir e excluir listas do rsync. Você vai querer algo como

rsync -ax --exclude='/tmp/*' --include=/usr/local --exclude=/usr / backup:
    
por 01.10.2014 / 01:58
1

Você pode fazer backup completo do sistema usando o rsync. Você pode usar --exlude = PATTERN para todos os diretórios que não são necessários.

rsync - uma ferramenta de cópia de arquivos rápida, versátil e remota (e local)

  -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
  -A,  --acls                 preserve ACLs (implies -p)
  -X, --xattrs                preserve extended attributes
  -v, --verbose               increase verbosity

Exemplo:

  rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/usr/tmp/*","/run/*","/mnt/*","/media/*","/var/cache/*","/","/lost+found"} /* /path/to/some/backup/folder
    
por 30.09.2014 / 23:29

Tags