Я арендую VPS в центре обработки данных, на котором работает веб-сервер apache2, nodejs, webmin, phpMyadmin и многие другие программы, установленные и настроенные на Debian Jessie 64.

Изначально ОС была установлена с настройками по умолчанию, касающимися разбиения диска, поэтому никаких LVM и прочего.

Сейчас я ищу план резервного копирования и восстановления, который мне нужен, чтобы восстановить полную настройку, скажем, через 10 минут или около того.

Я наткнулся на это привлекательное решение, в котором просто говорится, что вы делаете хороший Tar, начиная с корневого каталога системы и заканчивая резервным копированием, и при необходимости его можно удалить в корневом каталоге новой системы только с ОС (debian Jessie 64), и у вас есть Вы снова полностью идентичны и снова работаете в сети.

Осталось только сменить ip в DNS и мы счастливы.

Я пробую решение, описанное здесь: http://www.aboutdebian.com/tar-backup.htm

Я уверен, что это не так просто, и у меня такое ощущение, что некоторые файлы и каталоги должны быть исключены из резервной копии. например. сетевые интерфейсы? Мне кажется, когда вы копируете это из одного в другое, возникают конфликты, поскольку новый VPS имеет другой IP-адрес от своего хоста и тому подобное.

Я также могу понять, что dir /proc - это каталог, в котором все данные относятся к запущенным процессам на машине, и его не следует резервировать для восстановления?

Есть ли простой ответ на этот вопрос о том, как использовать эту вещь Tar? Что я должен исключить и что должно быть настроено на целевой машине, когда tar не обработан?

Редактировать Простое изменение его значения и его отсутствие не поможет. Распаковывая его в отдельную папку, я могу видеть, например. apache2 dir. При распаковке в корне не видно, что делает инструкцию полной BS.

Давай попробуем дальше

2 ответа2

0

Я думаю, что это должно сделать это, просто измените это для ваших нужд.

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 <your-mail@asdf.com>"
# 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

резервный список (должен находиться в той же папке, что и скрипт)

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

excludelist (также в той же папке)

/var/lib
/var/spool
/var/run
/root/scripts/backup
0

Этот крошечный жалкий файл fstab в папке /etc не позволил мне сделать это. Исключая это сделали свое дело. Стоило мне 10 часов попыток исключить то и то и то и то! :)

Итак, резервная копия это:

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' .

А затем в / на новой системе с новой базовой установкой Debian Jessie 64:

tar -zxvpf transonly-Sunday.gz

Перезагрузись и вуаля! :-)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .