// server management

Cum configurezi backup-uri automate pe un VPS Linux: ghid complet

August 05, 2026 · by CLIQHOST

Cum configurezi backup-uri automate pe un VPS Linux: ghid complet

Una dintre cele mai mari greșeli pe care le fac administratorii de server începători — și uneori chiar cei experimentați — este să amâne configurarea backup-urilor. „O fac mâine" devine „am pierdut totul ieri". Pe un VPS Linux, nu există un buton magic care să-ți salveze automat datele dacă nu îl configurezi tu. Vestea bună: procesul este mai simplu decât crezi, iar acest ghid îți explică totul pas cu pas.

De ce ai nevoie de backup-uri automate pe VPS

Înainte de a intra în tehnicalități, hai să clarificăm de ce backup-urile manuale nu sunt suficiente:

  • Eroarea umană — Un fișier șters accidental, o comandă greșită (rm -rf fără cale corectă) sau un update eșuat pot șterge date critice în secunde.
  • Atacuri cibernetice — Ransomware-ul și defacement-ul sunt reale. Fără backup, nu ai de unde reveni.
  • Defecțiuni hardware — Chiar și pe VPS-uri SSD de calitate, problemele de infrastructură există.
  • Update-uri software eșuate — O actualizare de kernel sau de aplicație poate strica întregul sistem.

O strategie solidă de backup urmează regula 3-2-1: 3 copii ale datelor, pe 2 suporturi diferite, dintre care 1 off-site (externă).

Instrumente necesare

Pentru acest ghid vei folosi unelte native Linux, disponibile pe orice distribuție (Ubuntu, Debian, CentOS, AlmaLinux):

  • tar — pentru arhivarea directoarelor
  • rsync — pentru sincronizare incrementală eficientă
  • cron — pentru programarea automată a sarcinilor
  • mysqldump — pentru exportul bazelor de date MySQL/MariaDB
  • (Opțional) rclone — pentru upload automat în cloud (Google Drive, S3, Backblaze)

Pasul 1: Creează structura de directoare pentru backup

Conectează-te la VPS prin SSH și creează o structură organizată:

mkdir -p /backup/{files,databases,logs}
chmod 700 /backup

Directorul /backup va conține:
- /backup/files — arhivele fișierelor de pe server
- /backup/databases — dump-urile MySQL
- /backup/logs — jurnalele operațiunilor de backup

Pasul 2: Script de backup pentru fișiere cu tar

Creează fișierul /usr/local/bin/backup-files.sh:

nano /usr/local/bin/backup-files.sh

Adaugă conținutul următor:

#!/bin/bash

DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/backup/files"
SOURCE_DIRS="/var/www /etc /home"
LOG="/backup/logs/files-$DATE.log"
RETENTION_DAYS=7

echo "[$(date)] Incepe backup fisiere..." >> "$LOG"

tar -czf "$BACKUP_DIR/files-$DATE.tar.gz" $SOURCE_DIRS 2>> "$LOG"

if [ $? -eq 0 ]; then
  echo "[$(date)] Backup reusit: files-$DATE.tar.gz" >> "$LOG"
else
  echo "[$(date)] EROARE la backup!" >> "$LOG"
fi

# Sterge backup-uri mai vechi de $RETENTION_DAYS zile
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "[$(date)] Curatare arhive vechi finalizata." >> "$LOG"

Salvează și fă scriptul executabil:

chmod +x /usr/local/bin/backup-files.sh

Ce face scriptul:
- Arhivează directoarele /var/www, /etc și /home — acolo unde stau site-urile, configurațiile și datele utilizatorilor
- Salvează arhiva cu data în nume (ex: files-2025-01-15.tar.gz)
- Șterge automat arhivele mai vechi de 7 zile pentru a economisi spațiu
- Înregistrează fiecare operație în log

Pasul 3: Script de backup pentru bazele de date MySQL

Creează /usr/local/bin/backup-databases.sh:

#!/bin/bash

DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/backup/databases"
DB_USER="root"
DB_PASS="parola_ta_mysql"
LOG="/backup/logs/db-$DATE.log"
RETENTION_DAYS=7

echo "[$(date)] Incepe backup baze de date..." >> "$LOG"

# Exporta fiecare baza de date separat
for DB in $(mysql -u"$DB_USER" -p"$DB_PASS" -e "SHOW DATABASES;" 2>/dev/null | grep -Ev "(Database|information_schema|performance_schema|sys)"); do
  mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB" 2>> "$LOG" | gzip > "$BACKUP_DIR/$DB-$DATE.sql.gz"
  echo "[$(date)] Backup finalizat pentru: $DB" >> "$LOG"
done

find "$BACKUP_DIR" -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
echo "[$(date)] Curatare dump-uri vechi finalizata." >> "$LOG"

Sfat de securitate: Nu lăsa parola MySQL în clar în script dacă serverul are mai mulți utilizatori. Folosește fișierul ~/.my.cnf cu permisiuni restrictive:

ini [client] user=root password=parola_ta_mysql
Apoi: chmod 600 ~/.my.cnf și elimină variabilele DB_USER/DB_PASS din script.

Fă scriptul executabil:

chmod +x /usr/local/bin/backup-databases.sh

Pasul 4: Sincronizare incrementală cu rsync (opțional dar recomandat)

Dacă ai un al doilea server sau un storage remote, rsync este ideal pentru sincronizare rapidă și eficientă — trimite doar fișierele modificate:

rsync -avz --delete /backup/ user@server-remote:/backup-extern/

Poți adăuga această comandă într-un al treilea script sau direct în crontab.

Pasul 5: Automatizare cu cron

Acesta este pasul care transformă backup-urile manuale în backup-uri automate. Deschide crontab-ul pentru root:

crontab -e

Adaugă liniile:

# Backup fisiere - zilnic la 02:00
0 2 * * * /usr/local/bin/backup-files.sh

# Backup baze de date - zilnic la 03:00
0 3 * * * /usr/local/bin/backup-databases.sh

Explicația sintaxei cron: minut oră zi_luna lună zi_săptămână comandă

  • 0 2 * * * — în fiecare zi, la ora 02:00
  • 0 3 * * * — în fiecare zi, la ora 03:00

Backup-urile sunt programate noaptea pentru a nu afecta performanța serverului în orele de vârf.

Pasul 6: Upload automat în cloud cu rclone

Pentru a respecta regula 3-2-1, backup-urile trebuie să existe și off-site. rclone permite sincronizarea cu zeci de provideri cloud.

Instalare:

curl https://rclone.org/install.sh | sudo bash

Configurare interactivă (exemplu pentru Backblaze B2 sau Google Drive):

rclone config

Urmează pașii din wizard, alege providerul și autentifică-te. Apoi adaugă în crontab:

# Upload backup in cloud - zilnic la 04:00
0 4 * * * rclone sync /backup/ backblaze:bucket-backup-vps/ --log-file=/backup/logs/rclone.log

Pasul 7: Testează backup-urile periodic

Un backup pe care nu l-ai testat niciodată este ca o asigurare cu clauze misterioase. Verifică lunar că:

  1. Arhivele există și nu sunt corupte:
    bash tar -tzf /backup/files/files-$(date +%Y-%m-%d).tar.gz | head -20

  2. Dump-urile MySQL sunt restaurabile:
    bash gunzip -c /backup/databases/numebaza-$(date +%Y-%m-%d).sql.gz | mysql -u root -p test_restore

  3. Log-urile nu conțin erori:
    bash grep -i eroare /backup/logs/*.log

Verificarea spațiului ocupat de backup-uri

Monitorizează periodic cât spațiu consumă backup-urile:

du -sh /backup/*
df -h /

Dacă spațiul pe VPS este limitat, poți reduce RETENTION_DAYS la 3-5 zile și te bazezi pe cloud pentru retenție mai lungă.

Cele mai frecvente greșeli de evitat

  • Backup pe același disc — Dacă discul cedează, pierzi și datele și backup-ul. Sincronizează întotdeauna off-site.
  • Backup fără testare — O arhivă coruptă descoperită în momentul dezastrului nu ajută cu nimic.
  • Parole în clar în scripturi — Folosește ~/.my.cnf sau variabile de mediu securizate.
  • Ignorarea log-urilor — Scripturile pot eșua silențios. Verifică log-urile săptămânal.
  • Retenție prea scurtă — Un ransomware poate trece neobservat câteva zile. Păstrează cel puțin 7 zile de backup.

Concluzie

Configurarea backup-urilor automate pe un VPS Linux nu necesită soluții scumpe sau complicate. Cu tar, mysqldump, cron și opțional rclone, poți construi în mai puțin de o oră un sistem robust care să-ți protejeze datele zilnic.

Cheia este să nu amâi: fiecare zi fără backup este o zi în care riști să pierzi totul.


Dacă administrezi un VPS și preferi să te concentrezi pe afacerea ta în loc să gestionezi backup-urile manual, CLIQHOST oferă VPS SSD cu opțiuni de backup gestionat și suport tehnic disponibil non-stop.

SHARE
// ce spun clienții

Ce spun clienții noștri

Recenzii reale de la clienți care au ales CLIQHOST pentru performanță, fiabilitate și suport tehnic.

★★★★★

"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău