Riepilogo post nella categoria Debian
Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2016, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

Quando capita di dover fare uno spostamento completo di un sito da un server ad un altro, e non si ha accesso SSH, ma soltanto un accesso FTP, scaricare tutti i file della webroot usando un client FTP come FileZilla o WinSCP è lento e noioso, e in più la connessione può cadere durante il trasferimento, obbligando quindi di fatto a ricominciare il mirroring da zero per non avere il pericolo di tralasciare qualche file.

Quindi, se vi capita di dover effettuare un mirroring di una webroot completa, di cui avete gli accessi FTP ma non gli accessi SSH, potete comunque risolvere il problema velocemente. Basta avere sottomano una qualsiasi distribuzione Linux e operare da linea di comando. Vediamo come fare un mirror completo da bash di una webroot accessibile da FTP. I comandi riportati sono validi per Debian / Ubuntu, ma sono facilmente replicabili su qualsiasi macchina Linux.

sudo apt-get install wget
mkdir /home/nome_del_backup; cd /home/nome_del_backup
wget -r -nc -l inf ftp://username_ftp:password_ftp@nome_host

Attenzione: se lo username dovesse contenere un @ ( come ad esempio, il tanto amato e tanto odiato Aruba ) la sintassi del comando qui sopra non andrebbe bene, perchè wget non riuscirebbe ad interpretare correttamente il nome dell'host, quindi, per ovviare al problema, basta eseguire

wget -r -nc -l inf --ftp-user=user_ftp@example --ftp-password=password_ftp ftp://nome_host

Prendendo proprio ad esempio Aruba, la sintassi sarebbe:

wget -r -nc -l inf --ftp-user=utente@aruba.it --ftp-password=password_ftp ftp://ftp.nome_del_dominio.it

Ovviamente, modificare "/home/nome_del_backup" con la propria cartella desiderata di destinazione del mirror, e cambiare "username_ftp", "password_ftp" e "dominio_da_dumpare.it" con i vostri dati di accesso e il dominio da dumpare.

Se il dump dovesse interrompersi prima del tempo, o se dovesse capitare qualsiasi altro problema che implichi lo stallo del dump via WGET, l'opzione -nc permette di riavviare lo stesso identico comando dicendo a wget di non riscaricare di nuovo le risorse già acquisite nel run precedente.

Una volta completato il tutto, si può creare un archivio .tar.gz del mirror con il comando

tar -zcvf nome-archivio-backup.tar.gz /home/nome_del_backup

Anche in questo caso, cambiare il nome dell'archivio e della directory sorgente con i vostri parametri. Per il resto, avete finito il lavoro!

Attenzione! Questo contenuto è vecchioQuesto articolo risale al 2016, quindi i contenuti e le operazioni qui consigliate potrebbero essere diventate obsolete nel corso del tempo.

Su Debian capita che possano succedere dei problemi con il file system ext3 o ext4, specialmente se state lavorando su un server che viene usato principalmente per lo storage di file / backup di grosse dimensioni, e specialmente se esiste più di un processo simultaneo che scrive e/o rimuove questi file di grosse dimensioni.

Quindi, per ovviare al problema, consiglio di impostare il controllo automatico del file system durante il boot con il modulo fsck ( che è l'alter-ego del vetusto chkdisk su Windows ) in modo che l'hard disk di sistema non risulti ancora montato, e in aggiunta un cron per il reboot automatico giornaliero per fare in modo che questo controllo venga effettuato giornalmente.

Ovviamente, il riavvio automatico giornaliero non è ottimale ed è da tralasciare nel caso in cui stiate facendo girare un webserver o un server mysql, in quanto non vi permetterebbe di avere abbastanza storicità nell'utilizzo di mysql per effettuare delle migliorie nelle performance ( ad esempio con mysqltuner )

Ecco come attivare il fsck automatico ( guida basata su Debian ):

sudo nano /etc/default/rcS
# be more verbose during the boot process
VERBOSE=yes
# automatically repair filesystems with inconsistencies during boot
FSCKFIX=yes

Poi, attivate il logging dei messaggi di boot per avere più controllo sulle operazioni effettuate durante il boot:

sudo apt-get install bootlogd sudo nano /etc/default/bootlogd

Nel file /etc/default/bootlogd inserite questa riga:

BOOTLOGD_ENABLE=yes

Infine, attivate l'auto-reboot giornaliero con una riga nel crontab. Consiglio di effettuare questa operazione sempre con sudo o con i permessi di root.

sudo crontab -e
# REBOOT GIORNALIERO AUTOMATICO ALLE 4 DEL MATTINO
0 4 * * * /sbin/shutdown -r now

Avete finito. Per fare una prova, date il comando

shutdown -r now

E, una volta completato l'avvio, controllate il file di log su /var/log/boot.

Buon lavoro!