Skocz do zawartości

Cykliczna Kopia Systemu W Chmurze, Np. Dropbox


marek353

Rekomendowane odpowiedzi

Chcę synchronizować kopię przyrostową systemu w Dropbox. Kopia może być wykonywana za pomocą rsync, skompresowana do pliku tgz i dla bezpieczeństwa plik kopii zaszyfrowany. Cały proces odbywa się w tle o ustalonej w crontab dowolnie porze dnia, tygodnia lub miesiąca. Jeżeli zauważyliście jakiś błąd lub inny mankament proszę o podzielenie się wątpliwościami  :D

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 weeks later...
Jak umieścić kopię systemu w chmurze?
 
Moja propozycja dotyczy Dropbox`a.  Aplikacja dostępna oczywiście w repozytoriach.
Zainspirował mnie skrypt znaleziony w internecie wykonujący backup automatycznie w ustalonych indywidualnie interwałach czasowych. Ja zadanie crontab powierzyłem root`owi. Skrypt po czwartej kopii kasuje ostatnią najstarszą z nich. Z uwagi na to, że kopia ma być eksportowana na dysk zewnętrzny łączem internetowym zmodyfikowałem skrypt dodając opcję kompresji tar oraz syfrowanie pliku. Trochę wydłuża to czas ale chyba warto. 
A więc do dzieła:
 
#!/bin/sh
 
# Katalog Docelowy (bez ostatniego /)
BACKUP_DIR=/home/user/bkp
 
# Katalog źródłowy
SOURCE_DIR=/*
 
# Ilość przechowywanych kopii (1 kopia dziennie)
NUM_BACKUP=4
 
 
# Jeżeli nie ma katalogu dla kopii to go tworzymy
if [ ! -d $BACKUP_DIR ]
then
        mkdir -p $BACKUP_DIR
fi
 
chmod -R 740 $BACKUP_DIR
 
# Wywalamy najstarszy backup
COUNT=0
for i in $(find "$BACKUP" -maxdepth 1 -type d | sort -Vr); 
do
    if [ "$i" != "$BACKUP" ]
    then
        COUNT=`expr $COUNT + 1`
        
        if [ $COUNT -gt $NUM_BACKUP ]
        then
            echo "Deleting: $i"
            rm -rf "$i"
        fi
    fi
done
 
# Pobieramy ostatni katalog backupu
i=1
while [ $i -le 30 ];
do
    #statements
    LAST_BACKUP=$(date -I -d "$i day ago")
    
    if [ -d $BACKUP/$LAST_BACKUP ]
    then
        echo "Found newst backup: $LAST_BACKUP"
        break
    fi
    i=`expr $i + 1`
done
 
# echo "$LAST_BACKUP"
 
CURRENT_BACKUP=$(date -I)
IGNORE_DIR='--exclude=/dev --exclude=/proc --exclude=/tmp --exclude=/sys --exclude=/home --exclude=/lost&home' 
 
echo "rsync -avh --progress $SOURCE_DIR $BACKUP_DIR/$CURRENT_BACKUP"
notify-send 'Start make Backup'
 
rsync -ah $IGNORE_DIR --link-dest=$BACKUP/$LAST_BACKUP $SOURCE_DIR $BACKUP_DIR/$CURRENT_BACKUP
 
notify-send 'End make Backup'
 
Pozostałe opcje kompresji i szyfrowania wyodrębniłem ze skryptu dla przejrzystości.
 
kompresujemy:
#kompresja pliku
CURRENT_BACKUP=$(date -I)
tar -zcf $BACKUP_DIR/$CURRENT_BACKUP.tgz $BACKUP_DIR/$CURRENT_BACKUP
 
szyfrujemy:
#Szyrowanie
CURRENT_BACKUP=$(date -I)
openssl enc -aes-256-cbc -salt -in $BACKUP_DIR/$CURRENT_BACKUP.tgz -out $BACKUP_DIR/$CURRENT_BACKUP.tgz.enc -k "HASŁO"
 
Proces ma być zautomatyzowany więc podaję hasło w poleceniu za opcją -k.
 
Sam eksport do Dropbox to nic prostszego. Robimy jakiś folder dla zrzutu. Dropbox ma domyślnie opcję uruchamiania z systemem więc kiedy znajdzie coś nowego w przykładowym folderze backup zaczyna automatyczną synchronizację i o nic więcej nie musimy się martwić. Trochę to trwa w zależności od szybkości posiadanego łącza internetowego ale odbywa się w tle i nie przeszkadza.
 
 
#Umieszczenie w dropbox
CURRENT_BACKUP=$(date -I)
cp $BACKUP_DIR/$CURRENT_BACKUP.tgz.aes /home/user/Dropbox/backup
 
Proces odzyskiwania systemu po ewentualnej awarii można wykonać całkowicie z linii poleceń w trybie ratunkowym lub live-CD albo innego systemu po z-chrootowaniu.
 
Odszyfrowanie:
openssl enc -aes-256-cbc -d -in arch.tgz.enc -out file.tgz
 
Rozpakowanie:
tar -zxvf nazwa_archiwum.tgz

 

To byłoby na tyle. Ja mimo wszystko mam wątpliwość czy procesy kompresji i szyfrowania a potem powrót do stanu pierwotnego nie spowoduje błędu, który sens całości postawi pod znakiem zapytania? Proszę o ewentualne uwagi.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...