Postupno sigurnosno kopiranje na VPS-u pomoću rsync-a i cron-a
Uvod
Sigurnosne kopije su neophodne za svaki VPS. One vas štite od slučajnih brisanja, pogrešaka u konfiguraciji, oštećenja podataka ili kompromitiranja poslužitelja.
Ovaj priručnik objašnjava kako postaviti inkrementalno sigurnosno kopiranje koristeći:
- rsync — učinkovit alat za kopiranje datoteka
- tvrde poveznice — kako bi se izbjegli duplicirani podaci u svakoj sigurnosnoj kopiji
- cron — za zakazivanje automatskih sigurnosnih kopija
Rezultat: svaka sigurnosna kopija izgleda kao potpuna sigurnosna kopija, ali samo izmijenjene datoteke zauzimaju dodatni prostor. Ovaj je pristup jednostavan, pouzdan i prikladan za većinu uobičajenih postavki VPS-a.
Kako funkcioniraju inkrementalni backupi s rsync-om
rsync pruža dvije ključne značajke:
- Sinkronizacija samo izmijenjenih datoteka
- Opcija
--link-dest: stvara tvrde poveznice za nepromijenjene datoteke, omogućujući više "punih" direktorija za sigurnosne kopije bez zauzimanja dodatnog prostora.
Primjer strukture direktorija:
/backups/ daily.0/ - today's backup daily.1/ - yesterday's backup daily.2/ - backup from 2 days ago
Svaka mapa izgleda kao potpuna sigurnosna kopija, ali prostor zauzimaju samo razlike.
Preduvjeti
Na VPS-u:
- Instalacija Linuxa
- Pristup kao root ili korisnik sa sudo
- Dovoljno prostora na disku za snimke sigurnosnih kopija
- Opcionalno: udaljena pohrana ako se pravi sigurnosna kopija na drugi poslužitelj
Instalirajte rsync ako je potrebno:
sudo apt update sudo apt install rsync
Zaustavite svoje poslužitelje baza podataka ili isključite njihove direktorije s podacima iz sigurnosne kopije. Online sigurnosno kopiranje baze podataka putem rsync-a može uzrokovati oštećenu sigurnosnu kopiju.
Izrada direktorija za sigurnosne kopije
Odaberite lokaciju za sigurnosne kopije. Obično:
- Lokalni datotečni sustav:
/backups/ - Vanjski disk:
/mnt/storage/backups/ - Daljinski poslužitelj putem SSH-a:
user@backup-server:/data/backups/
Primjer (lokalno):
sudo mkdir -p /backups sudo chmod 700 /backups
Osnovna rsync naredba za inkrementalno sigurnosno kopiranje
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, simbolne poveznice)--delete— ukloniti datoteke izbrisane na izvoru--link-dest— stvaranje tvrdih poveznica na nepromijenjene datoteke u prethodnom snimku/source/data/— direktorij koji želite sigurnosno kopirati/backups/daily.0/— današnja snimka
Rotacijski skripta za dnevne snimke
Napravite skriptu za:
- Rotirajte postojeće sigurnosne kopije
- Stvorite novu inkrementalnu sigurnosnu kopiju
- Sačuvajte N dana (primjer: 7)
Stvori datoteku:
sudo nano /usr/local/bin/backup_daily.sh
Umetnite:
#!/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
Spremite i zatvorite. Učinite je izvršnom:
sudo chmod +x /usr/local/bin/backup_daily.sh
Možete promijeniti varijable na vrhu skripte kako biste je prilagodili svojim potrebama. Promijenite SOURCE na određenu mapu ako vam, na primjer, nije potreban potpuni backup korijenskog datotečnog sustava.
Isključivanje nepotrebnih direktorija
Kreira 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 pomoću crona
Uređivanje crontaba:
sudo crontab -e
Dodajte (backup svakodnevno u 03:00):
0 3 * * * /usr/local/bin/backup_daily.sh >/var/log/backup.log 2>&1
Ovo osigurava redovite automatske snimke.
Sigurnosno kopiranje na udaljeni poslužitelj (po želji)
Ako želite izvanlokacijsku sigurnosnu kopiju, slijedite sljedeće korake. Kreirajte odredišnu mapu na odredišnom poslužitelju:
mkdir -p /backups
Provjerite jesu li SSH ključevi konfigurirani. Pokrenite sljedeću naredbu za generiranje vašeg SSH ključa:
ssh-keygen
Zamijenite <YOUR_REMOTE_USER> svojim korisničkim imenom na udaljenom poslužitelju, <YOUR_REMOTE_SERVER> nazivom domene udaljenog poslužitelja i pokrenite sljedeću naredbu za kopiranje SSH ključa na udaljeni poslužitelj:
ssh-copy-id <YOUR_REMOTE_USER>@<YOUR_REMOTE_SERVER>
Uklonite komentar s varijabli REMOTE_USER i REMOTE_SERVER na vrhu datoteke backup_daily.sh, zamijenite <YOUR_REMOTE_USER> svojim korisničkim imenom na udaljenom poslužitelju, <YOUR_REMOTE_SERVER> nazivom domene udaljenog poslužitelja i spremite datoteku 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 sigurnosnih kopija vaših važnih datoteka i podataka na udaljene poslužitelje. Kako biste je koristili kao pohranu za udaljenu sigurnosnu kopiju, prijavite se na web-sučelje CloudBoxa i dodajte svoj javni SSH ključ u profil. Postavke profila nalaze se u gornjem desnom kutu.

Umetnite svoj javni SSH ključ u odjeljak "Public keys" kako biste prenijeli ključ na poslužitelj.

Komentirajte varijable REMOTE_USER i REMOTE_SERVER na vrhu datoteke backup_daily.sh, zamijenite <VAŠ_DALJINSKI_SERVER> nazivom domene vašeg CloudBox poslužitelja i spremite backup_daily. sh kako biste omogućili daljinsku sigurnosnu kopiju. <VAŠ_DALJINSKI_SERVER> s nazivom domene vašeg CloudBox poslužitelja i spremite datoteku backup_daily.sh kako biste omogućili daljinsku sigurnosnu kopiju.
Testiranje sigurnosnih kopija
Prije nego što 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/*.Mora postojati samo jedna velika sigurnosna kopija. - Provjerite integritet datoteka:
ls -l /backups/daily.0/etc/
Obnova podataka
Možete vratiti bilo koju pojedinačnu datoteku:
cp /backups/daily.2/etc/nginx/nginx.conf /etc/nginx/
Ili vratite sve:
sudo rsync -a /backups/daily.0/ /
Obnavljanje sistemskih direktorija prepiše postojeće datoteke.
Sigurnosni aspekti
- Koristite stroga ovlaštenja na direktorijima za sigurnosne kopije (
chmod 700). - Ako koristite SSH, onemogućite prijavu lozinkom, koristite samo ključeve.
- Ako je moguće, ne pohranjujte sigurnosne kopije na istom disku kao i poslužitelj.
- Šifrirajte udaljene sigurnosne kopije pomoću LUKS-a ili šifriranog pohranjivanja po potrebi.
Praćenje i evidencija
Logiranje je već dodano u cron: /var/log/backup.log
Redovito provjeravajte:
tail -f /var/log/backup.log
Zaključak
Korištenje rsynca s cronom nudi:
- Brze inkrementalne sigurnosne kopije
- Učinkovita upotreba diska putem tvrdog poveznika
- Jednostavan postupak vraćanja
- Potpuno automatizirano zakazivanje
Ova je metoda pouzdana i jednostavna za početničke administratore te savršeno funkcionira na Linux VPS postavkama.