Skripte za varnostno kopiranje datotek iz Linuxa v shrambo v oblaku

Ne tako dolgo nazaj smo objavili članek o povezovanju priljubljenih brezplačnih storitev shranjevanja v oblaku s strežnikom s CentOS 7. V tem članku bomo pokazali, kako lahko uporabite shranjevalne podatke za varnostno kopiranje podatkov s svojega strežnika. Te skripte uporabljam za dodatno varnostno kopijo datotek spletnega mesta in baz podatkov s svojega Linux VPS strežnika.

Vsebina:

  • Varnostno kopirajte podatke na OneDrive iz Linuxa CentOS
  • Varnostno kopiranje v Google Drive.
  • Rezervni skript na Yandex.Disk iz Linuxa

Varnostno kopirajte podatke na OneDrive iz Linuxa CentOS

Naredili bomo varnostno kopijo spletnega mesta in baze podatkov ter preverili "starost" varnostne kopije (izbrisali varnostne kopije pred tednom dni) in na pošto poslali poročilo s celotnimi podatki o izvedbi skripta. Pravzaprav sam bash skript:

#! / bin / bash
# Kopirajte datoteke spletnega mesta v začasni imenik
rsync -avzr --progress / var / www / html / / var / www / tmp / backup / >> result.txt
# Izvedite zapisnik baze podatkov, dump datoteko namestite v začasni imenik
mysqldump joomla> /var/www/tmp/backup/backup.sql
# Ustvari začasni arhiv imenika
tar -cvzf backup - $ (datum +% y% m% d) .tar.gz --absolute-names / var / www / tmp / backup / >> result.txt
# Preverite imenik oblakov za stare varnostne kopije, če obstajajo, izbrišite
najdi / root / OneDrive / backup / -name "backup * .tar.gz" -mtime +7 -exec rm -f \; >> rezultat.txt
# Kopirajte predhodno ustvarjen arhiv v oblak
rsync -avzr --progress /root/bin/backup*.tar.gz / root / OneDrive / backup / >> result.txt
# Izbriši arhiv iz imenika skriptov
rm -rf /root/bin/backup*.tar.gz >> rezultat.txt
# Z oblakom se sinhroniziramo z zastavo -local-first, kar nam bo omogočilo, da odstranimo stare varnostne kopije iz oblaka, če jih lokalno izbrišemo in naložimo nove varnostne kopije
onedrive - lokalen-prvi - sinhroniziraj >> rezultat.txt
# Pošljemo e-poštno sporočilo s priloženo datoteko, kjer je prikazan celoten postopek varnostne kopije (nadomestite s svojim nabiralnikom)
odmev "Poglejte v datoteki napake in jih odpravite" | mail -a "/root/bin/result.txt" -s "Varnostno kopiranje ustvarjeno" - ******@gmail.com
# Očistimo imenike iz nepotrebnih datotek
rm -rf /root/bin/result.txt && rm -rf / var / www / tmp / backup / *

Preden sem napisal ta članek, sem ustvaril več varnostnih kopij, da bom dokazal, da skript deluje pravilno (briše stare varnostne kopije in naloži nove).

Ročno sem tekel 3-krat. Ustvarjenih je bilo več varnostnih kopij, po katerih so bili vsi uspešno poslani v oblak:

ls -la / root / OneDrive / varnostna kopija /

skupaj 28260 drwxr-xr-x 2 korenski koren 102 september 3 17:02. drwxr-xr-x 5 korenski koren 94 september 3 11: 15 ... -rw-r - r-- 1 korenski koren 9643081 3. september 17:00 backup-1909031700.tar.gz -rw-r - r-- 1 root root 9643082, 3. september 17:01 backup-1909031701.tar.gz -rw-r - r-- 1 root root 9643083 3. september 17:02 backup-1909031702.tar.gz Inicializacija mehanizma za sinhronizacijo ... Sinhroniziranje sprememb iz lokalne poti najprej pred prenosom sprememb iz programa OneDrive ... Brisanje predmeta iz OneDrive-a: backup / backup-1909031700.tar.gz Brisanje elementa iz OneDrive-a: backup / backup-1909031701.tar.gz Brisanje predmeta iz OneDrive-a: backup / backup-1909031702.tar.gz Nalaganje nova datoteka ./backup/backup-1909031704.tar.gz ... Nalaganje 100% | oooooooooooooooooooooooooooooooooooooooooo | Sestavljeno v 00:00:04 končano. Obdelava 6 sprememb

Preverite oblak, vsi trije arhivi s varnostnimi kopijami tukaj:

Naslednji korak sem iz imenika na strežniku izbrisal ustvarjene varnostne kopije in znova zagnal skript. Vnos vsebine imenika na strežniku:

ls -la / root / OneDrive / varnostna kopija /

skupaj 9420 drwxr-xr-x 2 korenski koren 38 september 3 17:04. drwxr-xr-x 5 korenski koren 94 september 3 11: 15 ... -rw-r - r-- 1 korenski koren 9643082 3. septembra 17:04 backup-1909031704.tar.gz 

Ko sem vstopil v spletni vmesnik OneDrive, sem videl, da so varnostne kopije izbrisane in od tam samodejno.

Po zagonu skripta sem prejel e-pošto:

To je vse, to je to, varnostno kopiranje na OneDrive je končano..

Varnostno kopiranje v Google Drive.

Varnostno kopiranje na Google Drive v Seju se ni izkazalo tako enostavno kot pri OneDriveu, čeprav je nastavitev sama preprosta. Glavna težava je nastala z odstranitvijo starih varnostnih kopij iz Googlovega diska, saj imenik za shranjevanje ni nameščen na strežniku. Toda po dolgem preučevanju pomoči za pomoč pri vožnji smo uspeli nadgraditi svoj prej uporabljeni skript.

#! / bin / bash
# brisanje datotek, starejših od 7 dni, z g.drive
/ usr / sbin / seznam pogonov -q "modifiedDate < '$(date -d '-7 day"+%Y-%m-%d')'" | cut -d" " -f1 - | xargs -L 1 drive delete -i
rsync -avzr --progress / var / www / html / / var / www / tmp / backup / >> result.txt
mysqldump joomla> /var/www/tmp/backup/backup.sql
tar -cvzf backup - $ (datum +% Y% m% d) .tar.gz --absolute-names / var / www / tmp / backup / >> result.txt
# naložite datoteko v g.drive
/ usr / sbin / drive upload -f /root/bin/backup*.tar.gz >> rezultat.txt
rm -rf /root/bin/backup*.tar.gz >> rezultat.txt
odmev "Poglejte v datoteki napake in jih odpravite" | mail -a "/root/bin/result.txt" -s "Varnostno kopiranje ustvarjeno" - ******@gmail.com
rm -rf /root/bin/result.txt
rm -rf / var / www / tmp / backup / *

Preostalih korakov v scenariju nisem naslikal, saj se ponavljajo s prejšnjimi.

Z izvajanjem skripta je bil izveden:

sh backup_gdrive.sh

Odstranjena datoteka 'DSC_2151.NEF' Odstranjena datoteka 'DSC_2153.NEF' Odstranjena datoteka 'DSC_2159.NEF' Odstranjena datoteka 'DSC_2226.NEF' Odstranjena datoteka 'DSC_2225.NEF'
Preverite razpoložljivost datotek v Googlu Drive: seznam pogonov
Velikost naslova id je ustvarjena 1oay3-FAWBZRjHtma1cRTLrOvf3t8hRpD backup-20190904.tar.gz 9,6 MB 2019-09-04 14:43:25

S spletnega vmesnika je tako viden kot s konzole:

Tako dobimo skript, ki preveri prisotnost starih varnostnih kopij v oblaku Google Drive, jih izbriše, če izpolnjujejo zahteve, nato ustvari varnostno kopijo spletnega mesta in ga pošlje v isti oblak.

Rezervni skript na Yandex.Disk iz Linuxa

To oblačilo v oblaku sem pustil za prigrizek, saj je varnostno kopiranje na Yandex.Disk najlažje, ker Yandexovo shranjevanje v oblaku smo prek WebDav postavili kot ločeno diskovno napravo. Način je enak, zaženemo skript, le z majhno razliko, ni nam treba sinhronizirati ali nalagati datotek s posebnimi ukazi, delamo kot z običajnim imenikom strežnikov. Sinhronizacija imenika se izvaja z uporabo rsync. Scenarij bo izgledal tako:

#! / bin / bash
rsync -avzr --progress / var / www / html / / var / www / tmp / backup / >> result.txt
mysqldump joomla> /var/www/tmp/backup/backup.sql
tar -cvzf backup - $ (datum +% Y% m% d) .tar.gz --absolute-names / var / www / tmp / backup / >> result.txt
find / mnt / yad / -name "backup * .tar.gz" -mtime +7 -exec rm -f \; >> rezultat.txt
rsync -avzr --progress /root/bin/backup*.tar.gz / mnt / yad / >> rezultat.txt
rm -rf /root/bin/backup*.tar.gz >> rezultat.txt
odmev "Poglejte v datoteki napake in jih odpravite" | mail -a "/root/bin/result.txt" -s "Varnostno kopiranje ustvarjeno" - ****@gmail.com
rm -rf /root/bin/result.txt
rm -rf / var / www / tmp / backup / *

Vse enako, samo brez dodatnih ukazov. Če imate druge poti do shranjevanja v oblaku, spremenite skript na svojo.

Na koncu članka bi rad dodal. Te skripte sem postavil v ločen imenik in jih vodil na krono. Če vam diskovni prostor v oblačnih diskih pogosto omogoča ustvarjanje varnostnih kopij, jih ustvarite čim pogosteje, priporočam vsaj enkrat na 3 dni. 100% uporabljajte svoje vire za shranjevanje v oblaku.

Primeri nalog v kroni:

0 0 * * 6 /root/bin/backup.sh - zaženite skript za varnostno kopiranje vsako soboto ob 00-00
0 0 * / 3 * * /root/bin/backup.sh - zaženite skript za varnostno kopiranje vsake 3 dni ob 00-00

In tako naprej, kolikor želite, konfigurirajte varnostne kopije, ko je obremenitev strežnika minimalna.