Inkrementalne varnostne kopije na VPS z uporabo rsync in cron | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Inkrementalne varnostne kopije na VPS z uporabo rsync in cron

Uvod

Varnostne kopije so bistvene za vsak VPS. Ščitijo vas pred nenamernimi izbrisi, napakami v konfiguraciji, poškodovanjem podatkov ali kompromitacijo strežnika.

Ta priročnik pojasnjuje, kako nastaviti inkrementalne varnostne kopije z uporabo:

  • rsync — učinkovito orodje za kopiranje datotek
  • trdih povezav — da se izognete podvajanju podatkov v vsaki varnostni kopiji
  • cron — za načrtovanje samodejnih varnostnih kopij

Rezultat: vsak posnetek izgleda kot popolna varnostna kopija, vendar le spremenjene datoteke zavzamejo dodaten prostor. Ta pristop je preprost, zanesljiv in primeren za večino običajnih nastavitev VPS.

Kako delujejo inkrementalne varnostne kopije z rsync

rsync ponuja dve ključni funkciji:

  1. Sinhronizacija samo spremenjenih datotek
  2. Možnost --link-dest: ustvarja trde povezave za nespremenjene datoteke, kar omogoča več "polnih" imenikov varnostnih kopij brez porabe dodatnega prostora.

Primer strukture imenika:

/backups/ daily.0/ - današnja varnostna kopija daily.1/ - včerajšnja varnostna kopija daily.2/ - varnostna kopija od predvčerajšnjim

Vsaka mapa se zdi kot popolna varnostna kopija, vendar le razlike zavzamejo prostor.

Predpogoji

Na VPS:

  • Namestitev Linuxa
  • Dostop kot root ali uporabnik s sudo
  • Dovolj prostora na disku za posnetke varnostnih kopij
  • Neobvezno: oddaljeno shranjevanje, če varnostno kopirate na drug strežnik

Namestite rsync, če je potrebno:

sudo apt update

sudo apt install rsync

Info

Opozorilo: Ustavite svoje strežnike baz podatkov ali izključite njihove imenike podatkov iz varnostne kopije. Spletna varnostna kopija baze podatkov prek rsync lahko povzroči poškodovano varnostno kopijo baze podatkov.

Ustvarjanje imenikov za varnostne kopije

Izberite lokacijo za varnostne kopije. Običajno:

  • Lokalni datotečni sistem: /backups/
  • Zunanji disk: /mnt/storage/backups/
  • Oddaljeni strežnik prek SSH: user@backup-server:/data/backups/

Primer (lokalno):

sudo mkdir -p /backups

sudo chmod 700 /backups

Osnovni rsync ukaz za inkrementalne varnostne kopije

Spodaj je ključni rsync ukaz:

rsync -a --delete \ --link-dest=/backups/daily.1 \ /source/data/ \ /backups/daily.0/

Pojasnilo:

  • -a — arhivski način (ohranja dovoljenja, lastnike, časovne žige, simbolne povezave)
  • --delete — odstrani datoteke, izbrisane na viru
  • --link-dest — ustvari trde povezave do nespremenjenih datotek v prejšnjem posnetku
  • /source/data/ — imenik, ki ga želite varnostno kopirati
  • /backups/daily.0/ — današnji posnetek

Rotacijski skript za dnevne posnetke

Ustvarite skript za:

  1. Rotacijo obstoječih varnostnih kopij
  2. Ustvarjanje nove inkrementalne varnostne kopije
  3. Ohranitev N dni (primer: 7)

Ustvarite datoteko:

sudo nano /usr/local/bin/backup_daily.sh

Prilepite:

#!/bin/bash BACKUP_DIR="/backups/" SOURCE="/" EXCLUDE="/etc/backup-exclude.txt" DAYS="7" #REMOTE_USER="<YOUR_REMOTE_USER>" #REMOTE_SERVER="<YOUR_REMOTE_SERVER>" REMOTE_DIR="/backups/" # Rotacija for ((i=DAYS-1; i>=0; i--)); do if [ -d "$BACKUP_DIR/daily.$i" ]; then rm -rf "$BACKUP_DIR/daily.$((i+1))" mv "$BACKUP_DIR/daily.$i" "$BACKUP_DIR/daily.$((i+1))" fi done # Priprava imenikov za varnostne kopije mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Izvedba inkrementalne varnostne kopije rsync -a --delete \ --link-dest="$BACKUP_DIR/daily.1" \ --exclude-from="$EXCLUDE" \ "$SOURCE" "$BACKUP_DIR/daily.0" if [ -n "$REMOTE_USER" ] && [ -n "$REMOTE_SERVER" ] && [ -n "$REMOTE_DIR" ]; then rsync -azv --delete "$BACKUP_DIR" "$REMOTE_USER@$REMOTE_SERVER:$REMOTE_DIR" fi

Shranite in izstopite. Naredite ga izvedljivega:

sudo chmod +x /usr/local/bin/backup_daily.sh

Spremenite lahko spremenljivke na vrhu skripta, da ga prilagodite svojim potrebam. Spremenite SOURCE na določen imenik, če ne potrebujete popolne varnostne kopije korenskega datotečnega sistema, na primer.

Izključitev nepotrebnih imenikov

Ustvarite datoteko za izključitev:

sudo nano /etc/backup-exclude.txt

Tipične izključitve:

  • /proc
  • /sys
  • /tmp
  • /run
  • /dev
  • /mnt
  • /media
  • /var/cache
  • /backups

Načrtovanje varnostnih kopij s cron

Uredite crontab:

sudo crontab -e

Dodajte (varnostna kopija ob 03:00 vsak dan):

0 3 * * * /usr/local/bin/backup_daily.sh >/var/log/backup.log 2>&1

To zagotavlja redne samodejne posnetke.

Varnostno kopiranje na oddaljeni strežnik (neobvezno)

Če želite varnostno kopijo izven lokacije, sledite naslednjim korakom. Ustvarite ciljno mapo na ciljnem strežniku:

mkdir -p /backups

Prepričajte se, da so SSH ključi konfigurirani. Izvedite naslednji ukaz za generiranje vašega SSH ključa:

ssh-keygen

Zamenjajte <YOUR_REMOTE_USER> z vašim uporabniškim imenom na oddaljenem strežniku, <YOUR_REMOTE_SERVER> z imenom domene vašega oddaljenega strežnika in izvedite naslednji ukaz za kopiranje vašega SSH ključa na oddaljeni strežnik:

ssh-copy-id <YOUR_REMOTE_USER>@<YOUR_REMOTE_SERVER>

Odkomenirajte spremenljivki REMOTE_USER, REMOTE_SERVER na vrhu vašega backup_daily.sh, zamenjajte <YOUR_REMOTE_USER> z vašim uporabniškim imenom na oddaljenem strežniku, <YOUR_REMOTE_SERVER> z imenom domene vašega oddaljenega strežnika in shranite backup_daily.sh za omogočanje oddaljene varnostne kopije.

Nalaganje varnostnih kopij na INTROSERV CloudBox

INTROSERV ponuja spletno shranjevanje, ki vam omogoča samodejno ali ročno shranjevanje varnih kopij vaših pomembnih datotek in podatkov na oddaljenih strežnikih. Če ga želite uporabiti kot svoje oddaljeno shranjevanje varnostnih kopij, se prijavite v spletni vmesnik CloudBox in dodajte svoj javni ssh ključ v profil. Nastavitve profila se nahajajo v zgornjem desnem kotu.

Nastavitve profila CloudBox

Vstavite svoj javni SSH ključ v razdelek "Javni ključi" za nalaganje vašega ključa na strežnik.

Razdelek javnega SSH ključa CloudBox

Odkomenirajte spremenljivki REMOTE_USER, REMOTE_SERVER na vrhu vašega backup_daily.sh, zamenjajte <YOUR_REMOTE_USER> z vašim uporabniškim imenom na strežniku CloudBox, <YOUR_REMOTE_SERVER> z imenom domene vašega strežnika CloudBox in shranite backup_daily.sh za omogočanje oddaljene varnostne kopije.

Testiranje varnostnih kopij

Preden se zanesete na svoj sistem, testirajte varnostne kopije.

  1. Ročno zaženite skript: sudo /usr/local/bin/backup_daily.sh
  2. Preverite velikosti: du -sh /backups/*. Obstajati mora le ena velika varnostna kopija.
  3. Preverite celovitost datotek: ls -l /backups/daily.0/etc/

Obnavljanje podatkov

Lahko obnovite katero koli posamezno datoteko:

cp /backups/daily.2/etc/nginx/nginx.conf /etc/nginx/

Ali obnovite vse:

sudo rsync -a /backups/daily.0/ /

Info

Opozorilo: Obnavljanje sistemskih imenikov prepiše trenutne datoteke.

Varnostni premisleki

  • Uporabite stroga dovoljenja na imenikih varnostnih kopij (chmod 700).
  • Če uporabljate SSH, onemogočite prijavo z geslom, uporabljajte samo ključe.
  • Če je mogoče, ne shranjujte varnostnih kopij na isti disk kot strežnik.
  • Šifrirajte oddaljene varnostne kopije z uporabo LUKS ali šifriranega shranjevanja, če je potrebno.

Nadzor in beleženje

Beleženje je že dodano v cron: /var/log/backup.log

Redno preverjajte:

tail -f /var/log/backup.log

Zaključek

Uporaba rsync s cron ponuja:

  • Hitre inkrementalne varnostne kopije
  • Učinkovito uporabo diska prek trdih povezav
  • Preprost postopek obnove
  • Popolnoma avtomatizirano načrtovanje

Ta metoda je zanesljiva in enostavna za začetnike administratorje ter deluje odlično na linux VPS nastavitvah.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA