Salvări diferențiale de pe servere FTP cu ajutorul rsync

Povesteam acum ceva vreme despre cum am ajuns să reușesc a-mi automatiza salvările diferențiale de pe serverele de la GoDaddy (care nu suportă rsync). Însă în lista mea de servere se află și unele care nu au nici SSH, nu suportă nici rsync, (mai ales dacă e vorba de servere de Windows) și unde, singurul acces la fișiere se face doar prin FTP.

Până de curând, pentru astfel de servere foloseam niște scripturi care-mi descărcau practic cam toate fișierele, apoi comparau și adăugau în salvarea fișierele modificate. Nu pot zice că nu obțineam rezultatul dorit, însă și consumul de bandă era substanțial, practic pentru o salvare de câțiva kb eu descărcând toate fișierele. Nu în ultimul rând, astfel de salvări erau și cele mai mari consumatoare de timp și uneori de procesor.

Tot căutând soluții de optimizarea, am ajuns la ceea se numește curlftpfs. CurlFtpFs este un sistem de fișiere, bazat pe FUSE și libcurl, cu ajutorul căruia se pot accesa și conecta local, servere FTP.

CurlFtpFs se află în depozitele de bază ale Ubuntu astfel că se poate instala foarte ușor folosind următoarea comandă:

$ sudo apt-get install curlftpfs

Vom avea nevoie probabil de un director în care să montăm serverul de FTP.
De exemplu:

$ sudo mkdir /mnt/ftpserver

Comanda cu ajutorul căreia vom conecta în final contul de FTP la discul local va fi conform exemplului următor:

$ sudo curlftpfs -o allow_other ftp://nume_utilizator_ftp:parola_ftp@ftp.domeniu.com /mnt/ftpserver

Opțiunea “allow_other” este utilă pentru a permite accesul altor utilizatori decât cel de root.

Odată ce contul FTP a fost conectat local, putem porni sincronizarea:

$ rsync -avqqz /mnt/ftpserver/ /director/de/backup

După ce sincronizarea a avut loc, personal recomand deconectarea contului FTP:

$ umount /mnt/ftpserver

Toate cele de mai sus pot fi puse fără probleme într-un script a cărui execuție poate fi programată cu ajutorul cron.

Exemple și ajutor în utilizarea curlftpfs găsiți pe site-ul CurlFtpFs.

Leave a Reply

Your email address will not be published. Required fields are marked *

CommentLuv badge