Faça o backup do servidor web Debian Jessie 64 no VPS e restaure no Debian Jessie 64 no VPS

0

Eu alugo um VPS em um datacenter executando um servidor web apache2, nodejs, webmin, phpMyadmin e muitos outros softwares instalados e configurados em um Debian Jessie 64.

O sistema operacional foi inicialmente instalado com os padrões relativos ao particionamento do disco, de modo que nenhum LVM e coisas.

Agora, estou analisando um plano de backup e recuperação que preciso restaurar a configuração completa em, digamos, 10 minutos ou mais.

Eu deparei com essa solução atraente que indica que você cria um bom Tar começando da raiz do sistema para o backup e, se necessário, pode ser descompactado na raiz de um novo sistema com apenas o sistema operacional (debian Jessie 64) e você tem seu sytem completamente idêntico de volta on-line e rodando.

Só resta mudar o ip no DNS e estamos felizes.

Estou tentando a solução descrita aqui: link

Tenho certeza de que não pode ser tão fácil assim e tenho a sensação de que certos arquivos e diretórios devem ser excluídos do backup. por exemplo. interfaces de rede? Parece-me quando você copia isso de um para outro que os conflitos surgem desde que o novo VPS tem outro ip do seu Host e coisas assim.

Eu também posso entender que o dir / proc é o dir onde todos os dados estão relacionados com os processos em execução em uma máquina e absolutamente não deve ser feito backup para restaurar?

Existe uma resposta simples sobre esse assunto sobre como usar essa coisa do Tar? O que devo excluir e o que deve ser configurado na máquina de destino quando o tar é descompactado?

Editar Simplesmente tarring e untarring não faz o truque. Descompactá-lo para uma pasta separada eu posso ver por exemplo. o diretório apache2. Quando descompactado na raiz, não é visível o que faz com que as instruções sejam completas.

Vamos tentar mais

    
por Ingrid Lambrechtse 13.10.2016 / 19:56

2 respostas

0

Este minúsculo arquivo fstab miserável na pasta / etc foi o único que me impediu de fazê-lo. Excluindo, foi o truque. Custou-me 10 horas de tentar excluir isso e aquilo e isso e aquilo! :)

O backup é assim:

tar -zcvpf /tars/$archive_file --directory=/ --exclude='etc/fstab' -- exclude='boot' --exclude='dev' --exclude='var/www/uploads' --exclude='tars'  --exclude='proc' --exclude='sys' --exclude='tmp' --exclude='run' --exclude='mnt' --exclude='media' --exclude='lost+found' .

E então no / no novo sistema com uma nova instalação básica do Debian Jessie 64:

tar -zxvpf transonly-Sunday.gz

Reinicie e Voila! : -)

    
por 23.10.2016 / 21:45
0

acho que isso deve ser feito, apenas modifique-o para suas necessidades.

backup.sh:

#!/bin/sh

# Backupscript mit TAR
# Definieren der Konstanten
###########################
HOSTNAME="YOUR-SERVER-NAME-HERE"
# Backupname
BACKUPNAME="How your backup will be called"
# Emailempfaenger
EMAIL_TO="your-mail@com"
# Emailsender
EMAIL_FROM="Your Name <[email protected]>"
# Backup Verzeichnis
BACKUP_DIR="/root/scripts/backup"
# zu sicherende Files
LIST=$BACKUP_DIR"/backuplist"
# exkludierte Files
EXLIST=$BACKUP_DIR"/excludelist"
# Name des Backup-Device
#OUTDEV="/dev/st0"
OUTDEV="BACKUP-PATH/backup.'date +%A'.tar.gz"
# Log-Datei
LOGFILE=$BACKUP_DIR"/backup.'date +%A'.log"
# Copy Log
LOGCOPY=$BACKUP_DIR"/copy.log"
# Mail Subject Log
SUBJECT_LOG=$BACKUP_DIR"/subject.log"
# Mount Log
MOUNT_LOG=$BACKUP_DIR"/mount.log"
# tar Kommando zum sichern
# TAR_SICH="tar cvf"
TAR_SICH="tar cvzf"
# tar Kommando zum lesen
# TAR_READ="tar tvf"
TAR_READ="tar tvzf"
# tar Kommando zum zurueckspulen
# TAR_REWIND="mt -f /dev/st0 rewind"
# erwartete Filenamen
FILE_EXP=$BACKUP_DIR"/file_expected"
# gesicherte Filenamen
FILE_BCK=$BACKUP_DIR"/savedfiles"
# gelesene Dateien
FILE_READ=$BACKUP_DIR"/file_read"
# Fehler bei erwartete Filenamen
ERR_EXP=$BACKUP_DIR"/tar_find_error"
# Fehler bei gesicherte Filenamen
ERR_BCK=$BACKUP_DIR"/tar_write_error"
# Fehler bei Band zurueckspulen
ERR_REWIND=$BACKUP_DIR"/tar_rewind_error"
# Fehler bei gelesene Dateien
ERR_READ=$BACKUP_DIR"/tar_read_error"

# Sicherungsprotokolldateien auf NULL setzen
rm $LOGFILE $FILE_EXP $FILE_BCK $FILE_READ $ERR_EXP $ERR_BCK $ERR_REWIND $ERR_READ $SUBJECT_LOG $LOGCOPY $MOUNT_LOG 2> /dev/null
echo "Beginne Sicherung"
echo 'date' > $LOGFILE
echo

makebackup() {
    # Ins Root Verzeichnis wechseln
    cd /


    # Eintrag in die LOG 
    echo -n "Start TAR Datensicherung: " >> $LOGFILE
    date >> $LOGFILE
    echo >> $LOGFILE

    # Backuplist in Logfile schreiben
    echo >> $LOGFILE
    echo "Backuplist: " >> $LOGFILE
    cat $LIST >> $LOGFILE
    echo >> $LOGFILE

    # Sichern mit dem TAR Kommando
    echo "Beginne Sicherung ..." >> $LOGFILE
    $TAR_SICH $OUTDEV -T $LIST -X $EXLIST > $FILE_BCK 2> $ERR_BCK
    if [ -s $ERR_BCK ]; then
        cat $ERR_BCK >> $LOGFILE
    fi
    echo "Beende Sicherung ..." >> $LOGFILE
    echo >> $LOGFILE

    # Rueckgabewert von TAR Sicherung speichern
    RC=$?

    # Anzahl gesicherte Dateien speichern
    ANZ_SICH_FILES='wc $FILE_BCK | awk '{print $1}''
    echo "Anzahl gesicherte Dateien: " $ANZ_SICH_FILES >> $LOGFILE

    # Dateiverzeichnis des Bandes mit dem TAR Kommando lesen
    $TAR_READ $OUTDEV > $FILE_READ 2> $ERR_READ
    if [ -s $ERR_READ ]; then
        cat $ERR_READ >> $LOGFILE
    fi

    # Anzahl gesicherte Dateien speichern
    ANZ_READ_FILES='wc $FILE_READ | awk '{print $1}''
    echo "Anzahl gelesene Dateien  : " $ANZ_READ_FILES >> $LOGFILE
    echo >> $LOGFILE

    du -hs $OUTDEV >> $LOGFILE

    # Wenn die Anzahl erwarteten Dateien ungleich der gelesenen ist
    if [ $ANZ_READ_FILES -ne $ANZ_SICH_FILES ]; then
        echo "FEHLER bei Datensicherung " > $SUBJECT_LOG
        cat $SUBJECT_LOG >> $LOGFILE
        echo -n "Ende Datensicherung: " >> $LOGFILE
        date >> $LOGFILE
    else
        echo "Datensicherung erfolgreich abgeschlossen " > $SUBJECT_LOG
        cat $SUBJECT_LOG >> $LOGFILE
        echo -n "Ende Datensicherung: " >> $LOGFILE
        date >> $LOGFILE
    fi

    if [ $ANZ_READ_FILES != $ANZ_SICH_FILES ]; then
        echo "FEHLER bei Datensicherung " > $SUBJECT_LOG
    fi

    echo >> $LOGFILE

    # Mail Benachrichtigung
    mail $EMAIL_TO -r "'echo $EMAIL_FROM'" -s "'echo "Backup"' - 'echo $HOSTNAME' - 'echo $BACKUPNAME' - 'cat $SUBJECT_LOG'" < $LOGFILE

}



makebackup

#EOF

backuplist (deve estar na mesma pasta que o script)

/bin
/boot
/etc
/home
/lib
/lib64
/opt
/root
/sbin
/usr
/var

excludelist (também na mesma pasta)

/var/lib
/var/spool
/var/run
/root/scripts/backup
    
por 14.10.2016 / 09:41