În martie, am scris un articol despre o soluție de backup prin object storage, folosind MinIO. Astăzi, vom continua acel articol prin prezentarea unui script prin care puteți automatiza partea de backup, astfel încât să nu mai fie nevoie să faceți acest lucru manual.
Lucrurile manuale nu sunt recomandate, pentru că de obicei consumă timp și este posibil să uitați la un moment dat să mai faceți acești pași. Cu alte cuvinte, este posibil să uitați să faceți backup-ul pentru mai multe zile și în momentul în care aveți nevoie de un backup, să îi resimțiți lipsa.
Scriptul pe care-l voi prezenta astăzi este scris în bash și este destul de simplu de înțeles, dacă aveți câteva cunoștiințe basic despre bash scripting. Să nu mai pierdem timpul. Iată scriptul:
#!/bin/bash DIRECTORY_TO_BE_COMPRESSED=$1 DATE_NOW=`date +"%Y-%m-%d"` ARCHIVE_NAME="/home/minio/backup_${DATE_NOW}.tar.gz." tar cvzf - "$DIRECTORY_TO_BE_COMPRESSED" | split -b 1024m - "$ARCHIVE_NAME" for BACKUP_FILE in "${ARCHIVE_NAME}*"; do echo $BACKUP_FILE ./mc cp $BACKUP_FILE minio/backups rm -rf $BACKUP_FILE done
Pentru a folosi scriptul de mai sus, mai întâi va trebui să creeăm un bucket:
./mc mb minio/backups
După ce am creat bucketul, va trebui să alegem directorul pe care vrem să-l salvăm în Amazon S3. În cadrul scriptului de mai sus, acesta este oferit ca și argument al scriptului nostru – DIRECTORY_TO_BE_COMPRESSED. Folosind comanda tar, vom arhiva directorul și nu vom permite arhive mai mari de 1GB = 1024 MB. De exemplu, dacă arhiva finală ar avea 3.5 GB, o vom împărți în 4 arhive mai mici de maxim 1 GB fiecare. Bineînțeles că ultima va avea doar 0.5 GB. Acest split este benefic pentru a evita limitările în ceea ce privește filesize-ul unui fișier pe care-l puteți urca în cloud.
Mergând mai departe, avem în script și o instrucțiune repetitivă, prin intermediul căreia vom lua fiecare fișier generat și îl vom urca în cloud. După ce urcăm fișierul, folosim o simplă comandă de rm (remove) pentru a șterge arhiva de backup. Partea de cleanup este foarte importantă pentru a evita folosirea spațiului de pe serverul dvs. complet aiurea.
Cum vom apela scriptul? Cam așa:
./backup.sh /home/account/domains/domeniulmeu.ro
Dar mai e ceva. Încă nu am automatizat nimic. Altfel spus, trebuie să rulăm acest script manual, din linia de comandă. Cum facem să îi rulăm zilnic, fără nicio interacțiune umană? Simplu. Folosim un cronjob. Dacă VPS-ul dvs. rulează Ubuntu, pentru a seta un cronjob, va trebui să editați fișierul unde sunt acestea definite:
crontab -e
Aici vom adăuga o nouă linie:
0 0 * * * /bin/bash /home/account/backup.sh /home/account/domains/domeniulmeu.ro >> /home/account/backup.log 2>&1
Mai departe vom salva fișierul. Ultimul pas va consta în restartarea serviciului cron pentru ca modificările făcute de noi să fie luate în calcul:
service cron restart
Spor la backup!
Adaugă comentariu