Postopna varnostna kopiranja na VPS-ju z uporabo rsync in cron | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Postopna varnostna kopiranja na VPS-ju z uporabo rsync in cron

Uvod

Varnostne kopije so bistvene za vsak VPS. Zaščitijo vas pred naključnim brisanjem, napakami pri konfiguraciji, poškodbami podatkov ali ogrožanjem strežnika.

V tem priročniku je pojasnjeno, kako nastaviti inkrementalne varnostne kopije z uporabo:

  • rsync — učinkovitega orodja za kopiranje datotek
  • trdih povezav — za preprečevanje podvajanja podatkov v vsaki varnostni kopiji
  • cron — za načrtovanje avtomatskih varnostnih kopij

Rezultat: vsaka varnostna kopija je podobna popolni varnostni kopiji, vendar dodatni prostor zavzemajo le spremenjene datoteke. Ta pristop je preprost, zanesljiv in primeren za večino običajnih nastavitev VPS-jev.

Kako delujejo inkrementalne varnostne kopije z rsync

rsync ponuja dve ključni funkcionalnosti:

  1. Sinhronizacijo le spremenjenih datotek
  2. Opcija--link-dest: ustvari trdne povezave za nespremenjene datoteke, kar omogoča več »popolnih« imenikov varnostnih kopij, ne da bi porabljali dodatni prostor.

Primer strukture map:

/backups/ daily.0/ - today's backup daily.1/ - yesterday's backup daily.2/ - backup from 2 days ago

Vsaka mapa se prikaže kot popolna varnostna kopija, vendar prostor zavzemajo le razlike.

Predpogoji

Na VPS:

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

Po potrebi namestite rsync:

sudo apt update sudo apt install rsync

Warning

Ustavite strežnike z bazami podatkov ali izključite njihove mape s podatki iz varnostne kopije. Spletno varnostno kopiranje baz podatkov prek rsync lahko povzroči poškodovano varnostno kopijo baze podatkov.

Ustvarjanje map za varnostne kopije

Izberite mesto 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 ukaz rsync za inkrementalne varnostne kopije

Spodaj je ključni ukaz rsync:

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

Pojasnilo:

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

Skript za rotacijo dnevnih posnetkov

Ustvarite skript za:

  1. rotacijo obstoječih varnostnih kopij
  2. Ustvarite novo inkrementalno varnostno kopijo
  3. Shranjevanje 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/" # Rotate 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 # Prepare backup directories mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Perform incremental backup 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 zaprite. Nastavite izvedljivost:

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

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

Izključitev nepotrebnih map

Ustvarite datoteko z izključitvami:

sudo nano /etc/backup-exclude.txt

Tipične izključitve:

  • /proc
  • /sys
  • /tmp
  • /run
  • /dev
  • /mnt
  • /media
  • /var/cache
  • /varnostne kopije

Načrtovanje varnostnih kopij s cronom

Uredi crontab:

sudo crontab -e

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

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

To zagotavlja redne avtomatske varnostne kopije.

Varnostno kopiranje na oddaljeni strežnik (neobvezno)

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

mkdir -p /backups

Preverite, ali so SSH ključi pravilno nastavljeni. Izvedite naslednji ukaz za ustvarjanje vašega SSH ključa:

ssh-keygen

Zamenjajte <YOUR_REMOTE_USER> s svojim uporabniškim imenom na oddaljenem strežniku, <YOUR_REMOTE_SERVER> pa z imenom domene vašega oddaljenega strežnika in izvedite naslednji ukaz, da kopirate svoj SSH ključ na oddaljeni strežnik:

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

Odstranite komentar iz spremenljivk REMOTE_USER in REMOTE_SERVER na vrhu datoteke 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 ter shranite datoteko backup_daily.sh, da omogočite varnostno kopiranje na oddaljenem strežniku.

Prenos varnostnih kopij v 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 oddaljeno shranjevališče varnostnih kopij, se prijavite v spletni vmesnik CloudBox in dodajte svoj javni SSH ključ v profil. Nastavitve profila se nahajajo v zgornjem desnem kotu.

CloudBox profile settings

Vnesite svoj javni SSH ključ v razdelek »Javni ključi«, da ključ naložite na strežnik.

CloudBox public SSH key section

Odstranite komentar iz spremenljivk REMOTE_USER in REMOTE_SERVER na vrhu datoteke backup_daily.sh, nadomestite <YOUR_REMOTE_USER> s svojim uporabniškim imenom na strežniku CloudBox, <YOUR_REMOTE_SERVER> z imenom domene vašega strežnika CloudBox ter shranite datoteko backup_daily.sh, da omogočite oddaljeno varnostno kopiranje.

Preizkušanje varnostnih kopij

Preden se zanesete na svoj sistem, preizkusite 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

Obnovite lahko katero koli posamezno datoteko:

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

Ali pa obnovite vse:

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

Warning

Obnova sistemskih imenikov prepiše trenutne datoteke.

Varnostna navodila

  • Uporabite stroga dovoljenja za imenike varnostnih kopij (chmod 700).
  • Če uporabljate SSH, onemogočite prijavo z geslom in uporabljajte izključno ključe.
  • Če je mogoče, varnostnih kopij ne shranjujte na isti disk kot strežnik.
  • Po potrebi šifrirajte oddaljene varnostne kopije z LUKS ali šifriranim pomnilnikom.

Spremljanje in beleženje

Dnevniški vnosi so že dodani v cron: /var/log/backup.log

Redno preverjajte:

tail -f /var/log/backup.log

Zaključek

Uporaba rsync-a s cron-om ponuja:

  • hitre inkrementalne varnostne kopije
  • Učinkovito izkoriščanje prostora na disku prek trdih povezav
  • Preprost postopek obnovitve
  • Popolnoma avtomatizirano načrtovanje

Ta metoda je zanesljiva in enostavna za začetnike ter odlično deluje na Linux VPS-jih.

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