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:
- Sinkronizacija samo promijenjenih datoteka
- 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
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:
- Rotaciju postojećih sigurnosnih kopija
- Kreiranje nove inkrementalne sigurnosne kopije
- Č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.

Umetnite svoj javni SSH ključ u odjeljak "Javni ključevi" kako biste učitali svoj ključ na 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 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.
- Pokrenite skriptu ručno:
sudo /usr/local/bin/backup_daily.sh - Provjerite veličine:
du -sh /backups/*. Trebala bi postojati samo jedna velika sigurnosna kopija. - 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/ /
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.