Postupno sigurnosno kopiranje na VPS-u pomoću rsync-a i cron-a | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

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:

  1. Sinkronizacija samo izmijenjenih datoteka
  2. 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

Warning

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:

  1. Rotirajte postojeće sigurnosne kopije
  2. Stvorite novu inkrementalnu sigurnosnu kopiju
  3. 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.

CloudBox profile settings

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

CloudBox public SSH key section

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.

  1. Pokrenite skriptu ručno: sudo /usr/local/bin/backup_daily.sh
  2. Provjerite veličine: du -sh /backups/*. Mora postojati samo jedna velika sigurnosna kopija.
  3. 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/ /

Warning

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.

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