Inkrementalne sigurnosne kopije na VPS-u koristeći rsync i cron | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Inkrementalne sigurnosne kopije na VPS-u koristeći rsync i cron

Uvod

Sigurnosne kopije su ključne za svaki VPS. Štite vas od slučajnog brisanja, pogrešaka u konfiguraciji, oštećenja podataka ili kompromitacije servera.

Ovaj priručnik objašnjava kako postaviti inkrementalne sigurnosne kopije koristeći:

  • rsync — učinkovit alat za kopiranje datoteka
  • tvrde poveznice — kako bi se izbjeglo dupliciranje podataka u svakoj sigurnosnoj kopiji
  • cron — za zakazivanje automatskih sigurnosnih kopija

Rezultat: svaka snimka izgleda kao potpuna sigurnosna kopija, ali samo promijenjene datoteke zauzimaju dodatni prostor. Ovaj pristup je jednostavan, pouzdan i prikladan za većinu uobičajenih VPS postavki.

Kako funkcioniraju inkrementalne sigurnosne kopije s rsync-om

rsync pruža dvije ključne značajke:

  1. Sinkronizacija samo promijenjenih datoteka
  2. Opcija --link-dest: stvara tvrde poveznice za nepromijenjene datoteke, omogućujući više "potpunih" direktorija sigurnosnih kopija bez zauzimanja dodatnog prostora.

Primjer strukture direktorija:

/backups/ daily.0/ - današnja sigurnosna kopija daily.1/ - jučerašnja sigurnosna kopija daily.2/ - sigurnosna kopija od prije 2 dana

Svaka mapa izgleda kao potpuna sigurnosna kopija, ali samo razlike zauzimaju prostor.

Preduvjeti

Na VPS-u:

  • Linux instalacija
  • Pristup kao root ili korisnik sa sudo ovlastima
  • Dovoljno prostora na disku za snimke sigurnosnih kopija
  • Opcionalno: udaljena pohrana ako se sigurnosna kopija radi na drugom serveru

Instalirajte rsync ako je potrebno:

sudo apt update

sudo apt install rsync

Info

Upozorenje: Zaustavite svoje baze podataka ili isključite njihove direktorije podataka iz sigurnosne kopije. Online sigurnosna kopija baze podataka putem rsync-a može uzrokovati oštećenu sigurnosnu kopiju baze podataka.

Kreiranje direktorija za sigurnosne kopije

Odaberite lokaciju za sigurnosne kopije. Obično:

  • Lokalni datotečni sustav: /backups/
  • Vanjski disk: /mnt/storage/backups/
  • Udaljeni server putem SSH-a: user@backup-server:/data/backups/

Primjer (lokalno):

sudo mkdir -p /backups

sudo chmod 700 /backups

Osnovna rsync naredba za inkrementalne sigurnosne kopije

U nastavku je ključna rsync naredba:

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

Objašnjenje:

  • -a — način arhiviranja (čuva dozvole, vlasnike, vremenske oznake, simboličke poveznice)
  • --delete — uklanja datoteke izbrisane na izvoru
  • --link-dest — stvara tvrde poveznice na nepromijenjene datoteke u prethodnoj snimci
  • /source/data/ — direktorij koji želite sigurnosno kopirati
  • /backups/daily.0/ — današnja snimka

Skripta za rotaciju dnevnih snimki

Kreirajte skriptu za:

  1. Rotaciju postojećih sigurnosnih kopija
  2. Kreiranje nove inkrementalne sigurnosne kopije
  3. Čuvanje N dana (primjer: 7)

Kreirajte datoteku:

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

Zalijepite:

#!/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 # Priprema direktorija za sigurnosne kopije mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Izvođenje inkrementalne sigurnosne 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

Spremite i izađite. Učinite ga izvršnim:

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

Možete promijeniti varijable na vrhu skripte kako biste je prilagodili svojim potrebama. Promijenite SOURCE u određeni direktorij ako ne trebate potpunu sigurnosnu kopiju korijenskog datotečnog sustava, na primjer.

Isključivanje nepotrebnih direktorija

Kreirajte datoteku za isključivanje:

sudo nano /etc/backup-exclude.txt

Tipična isključenja:

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

Zakazivanje sigurnosnih kopija s cron-om

Uredite crontab:

sudo crontab -e

Dodajte (sigurnosna kopija u 03:00 svakodnevno):

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

Ovo osigurava redovite automatske snimke.

Sigurnosna kopija na udaljeni server (opcionalno)

Ako želite sigurnosnu kopiju izvan lokacije, slijedite sljedeće korake. Kreirajte odredišnu mapu na ciljanom serveru:

mkdir -p /backups

Osigurajte da su SSH ključevi konfigurirani. Izvršite sljedeću naredbu za generiranje vašeg SSH ključa:

ssh-keygen

Zamijenite <YOUR_REMOTE_USER> s vašim korisničkim imenom na udaljenom serveru, <YOUR_REMOTE_SERVER> s vašim domenom udaljenog servera i izvršite sljedeću naredbu za kopiranje vašeg SSH ključa na udaljeni server:

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

Otkomentirajte varijable REMOTE_USER, REMOTE_SERVER na vrhu vašeg backup_daily.sh, zamijenite <YOUR_REMOTE_USER> s vašim korisničkim imenom na udaljenom serveru, <YOUR_REMOTE_SERVER> s vašim domenom udaljenog servera i spremite backup_daily.sh kako biste omogućili udaljenu sigurnosnu kopiju.

Učitavanje sigurnosnih kopija na INTROSERV CloudBox

INTROSERV pruža online pohranu koja vam omogućuje automatsko ili ručno spremanje sigurnih kopija vaših važnih datoteka i podataka na udaljene servere. Da biste ga koristili kao svoju udaljenu pohranu sigurnosnih kopija, prijavite se u CloudBox web-sučelje i dodajte svoj javni ssh ključ u profil. Postavke profila nalaze se u gornjem desnom kutu.

CloudBox postavke profila

Umetnite svoj javni SSH ključ u odjeljak "Javni ključevi" kako biste učitali svoj ključ na server.

CloudBox odjeljak za javni SSH ključ

Otkomentirajte varijable REMOTE_USER, REMOTE_SERVER na vrhu vašeg backup_daily.sh, zamijenite <YOUR_REMOTE_USER> s vašim korisničkim imenom na CloudBox serveru, <YOUR_REMOTE_SERVER> s vašim domenom CloudBox servera i spremite backup_daily.sh kako biste omogućili udaljenu sigurnosnu kopiju.

Testiranje sigurnosnih kopija

Prije nego se oslonite na svoj sustav, testirajte sigurnosne kopije.

  1. Pokrenite skriptu ručno: sudo /usr/local/bin/backup_daily.sh
  2. Provjerite veličine: du -sh /backups/*. Trebala bi postojati samo jedna velika sigurnosna kopija.
  3. Provjerite integritet datoteka: ls -l /backups/daily.0/etc/

Vraćanje podataka

Možete vratiti bilo koju pojedinačnu datoteku:

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

Ili vratiti sve:

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

Info

Upozorenje: Vraćanje sistemskih direktorija prepisuje trenutne datoteke.

Sigurnosne razmatranja

  • Koristite stroge dozvole na direktorijima sigurnosnih kopija (chmod 700).
  • Ako koristite SSH, onemogućite prijavu lozinkom, koristite samo ključeve.
  • Ne pohranjujte sigurnosne kopije na istom disku kao server ako je moguće.
  • Šifrirajte udaljene sigurnosne kopije koristeći LUKS ili šifriranu pohranu ako je potrebno.

Nadzor i zapisivanje

Zapisivanje je već dodano u cron: /var/log/backup.log

Redovito provjeravajte:

tail -f /var/log/backup.log

Zaključak

Korištenje rsync-a s cron-om nudi:

  • Brze inkrementalne sigurnosne kopije
  • Učinkovito korištenje diska putem tvrdih poveznica
  • Jednostavan proces vraćanja
  • Potpuno automatizirano zakazivanje

Ova metoda je pouzdana i jednostavna za početnike administratore i savršeno funkcionira na linux VPS postavkama.

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