Tutorial

Manutenzione del sistema via SSH: rimuovere i file troppo grandi

Quando si utilizza un sistema operativo in remoto mediante SSH (ad esempio su VPS) è necessario effettuare o programmare preventivamente una manutenzione di sistema atta ad eliminare, ad esempio, i file di log troppo grossi, gli eventuali backup superflui e così via. Di fatto questo genere di operazioni impediscono la saturazione dello spazio disponibile che potrebbe impedire al sito di funzionare, provocando errori ad es. su MySql come:

partition with /var/lib/mysql is too full

che possono rendere impossibili da SSH operazioni di stop e riavvio del processo.

Si tratta di problematiche legate spesso allo gestione dello spazio su disco disponibile, e questo avviene se ad esempio è stata impostata male la generazione dei log (senza auto-cancellazione degli stessi con il comando logrotate): come fare, quindi, ad ottimizzare tale risorsa?

 

Trovare file che siano superiori ad una certa dimensione

Anzitutto per trovare i file “grandi” dobbiamo specificare una dimensione tramite il comando find, e farci restituire dal comando, dopo aver fatto login via SSH, ad esempio superiori ad una soglia prestabilita:

find / -size +10M -ls

Si specifica in proposito che 10M significa 10 Mebibyte e non 10 MB; si ricorda di eseguire le operazioni di cancellazione con la massima attenzione, e che non tutti i file possono essere, in generale, eliminati senza causare eventuali problemi, per cui è opportuno copiarseli ad esempio in locale con il comando scp. Ad esempio per copiare file.txt dall’host remoto (il sito) al vostro PC scrivete da una finestra del terminale:

scp username@xxx.xxx.xxx.xxx:file.txt /path/directory/locale 

se avete Mac o Linux installati oppure installate il client grafico open source WinSCP se avete Windows: si noti come username sia la vostra username di ssh, xxx.xxx.xxx.xxx sia l’IP che il provider del VPS vi ha fornito, file.txt sia il nome del file e l’ultimo parametro del comando sia invece la cartella destinazione della copia.

Analogamente per ricopiare il file in remoto (ad esempio se cancellato per errore):

scp file.txt username@xxx.xxx.xxx.xxx:/path/directory/remota  

Quando premerete invio, in entrambi i casi, sarà richiesta la password di accesso dell’utente username.

 

Trovare file che siano inclusi tra una dimensione minima e massima

Se analogamente volessimo usare il comando per specificare sia dimensione minima (10) che massima (12) scriveremo, invece:

find / -size +10M -size -12M -ls

Se siamo dentro ad una cartella, digitando:

ls -alt

vedremo in testa alla lista di file quelli che occupano maggiore spazio, ad esempio:

drwxrwxr-x  5 www-data ftpman         4096 Nov 15 09:40 .
-rw-r--r--  1 www-data www-data 1850748928 Nov 15 08:58 error_log.log
-rw-r--r--  1 www-data www-data     126084 Nov 12 23:16 sitemap2.xml
-rw-r--r--  1 www-data www-data      21854 Nov 12 23:16 sitemap2.xml.gz
drwxr-xr-x 17 www-data ftpman         4096 Nov  3 16:01 el-content
drwxr-xr-x  3 root     root           4096 Nov  3 14:25 ..
-rw-rw-rw-  1 www-data ftpman          745 Nov  3 12:42 .htaccess

Si ricorda inoltre che è possibile utilizzare una delle utility disco listate digitando sulla shell questo comando:

apt-cache search 'disk usage'

Rimozione dei file

Se vogliamo rimuovere un file ghi.log nella cartella /abc/def/, scriveremo così:

rm /abc/def/ghi.log

Se invece abbiamo ad esempio dei file di log numerati progressivamente (file1.log, …, file10.log) che vogliamo cancellare:

rm file{1..10}.log

che serve ad eliminare tutti i file con numerazione da 1 a 10. In generale rm<7em> non fornisce output esplicito di ciò che fa, a meno che non si usi il parametro -v (verbose).

Lascia un commento

Back to top button