{"id":25695,"date":"2026-03-27T10:00:00","date_gmt":"2026-03-27T09:00:00","guid":{"rendered":"https:\/\/soccorsowp.it\/blog\/?p=25695"},"modified":"2026-03-27T10:00:00","modified_gmt":"2026-03-27T09:00:00","slug":"backup-wordpress-ssh-terminale","status":"publish","type":"post","link":"https:\/\/soccorsowp.it\/blog\/backup-wordpress-ssh-terminale\/","title":{"rendered":"Come eseguire un backup WordPress via SSH e terminale"},"content":{"rendered":"<h1>Come eseguire un backup WordPress via SSH e terminale<\/h1>\n<p>Fare il <strong>backup di <a href=\"https:\/\/soccorsowp.it\/blog\/blocco-di-contenuti-opt-in-per-wordpress\/\">WordPress<\/a> via SSH<\/strong> \u00e8 il metodo pi\u00f9 veloce e affidabile quando hai accesso al terminale del server. Non dipendi da plugin, non carichi la dashboard e puoi automatizzare tutto con pochi comandi. In questa guida ti mostro come eseguire un backup completo \u2014 file e database \u2014 direttamente dal terminale, con comandi che puoi copiare e adattare al tuo server.<\/p>\n<h2>Quando conviene il backup via SSH<\/h2>\n<p>Il backup via SSH \u00e8 particolarmente utile in queste situazioni:<\/p>\n<ul>\n<li><strong>Sito molto grande:<\/strong> i plugin di backup spesso falliscono o vanno in timeout con siti che superano i 2-3 GB. Da terminale, non hai limiti di tempo o memoria PHP.<\/li>\n<li><strong>Dashboard inaccessibile:<\/strong> se il sito \u00e8 in errore, non puoi usare plugin. Ma SSH funziona indipendentemente dallo stato di WordPress.<\/li>\n<li><strong>Backup pre-aggiornamento rapido:<\/strong> prima di aggiornare WordPress, tema o plugin, un backup da terminale richiede meno di un minuto.<\/li>\n<li><strong>Automazione con cron:<\/strong> puoi schedulare backup automatici con crontab senza installare nulla su WordPress.<\/li>\n<\/ul>\n<h2>Prerequisiti<\/h2>\n<p>Per seguire questa guida ti serve:<\/p>\n<ul>\n<li><strong>Accesso SSH al server:<\/strong> la maggior parte degli hosting condivisi moderni offre accesso SSH. Verifica nel pannello hosting o contatta il supporto.<\/li>\n<li><strong>Un client SSH:<\/strong> su Mac e Linux il terminale \u00e8 integrato. Su Windows puoi usare PuTTY o il Windows Terminal.<\/li>\n<li><strong>Credenziali database:<\/strong> le trovi nel file <span style=\"font-family: monospace\">wp-config.php<\/span> del tuo sito WordPress.<\/li>\n<\/ul>\n<h2>Backup dei file WordPress<\/h2>\n<p>Il primo passo \u00e8 creare un archivio compresso di tutti i file del sito. Collegati via SSH e naviga nella cartella che contiene l&#8217;installazione di WordPress:<\/p>\n<pre>cd \/var\/www\/html\/\ntar -czf ~\/backup-wordpress-$(date +%Y%m%d).tar.gz .<\/pre>\n<p>Questo comando crea un file <span style=\"font-family: monospace\">.tar.gz<\/span> con la data corrente nella tua home directory. L&#8217;opzione <span style=\"font-family: monospace\">-c<\/span> crea l&#8217;archivio, <span style=\"font-family: monospace\">-z<\/span> lo comprime con gzip e <span style=\"font-family: monospace\">-f<\/span> specifica il nome del file.<\/p>\n<p>Se vuoi escludere la cartella cache (che pu\u00f2 pesare molto e non serve nel backup), usa:<\/p>\n<pre>tar -czf ~\/backup-wordpress-$(date +%Y%m%d).tar.gz --exclude='wp-content\/cache' .<\/pre>\n<p>Per siti molto grandi, puoi escludere anche i file di log e le cartelle temporanee per ridurre la dimensione del backup.<\/p>\n<h2>Backup del database con mysqldump<\/h2>\n<p>Il database contiene articoli, pagine, impostazioni, utenti e tutti i dati dinamici del sito. Per esportarlo, usa <span style=\"font-family: monospace\">mysqldump<\/span>:<\/p>\n<pre>mysqldump -u nome_utente -p nome_database &gt; ~\/backup-db-$(date +%Y%m%d).sql<\/pre>\n<p>Il sistema chieder\u00e0 la password del database. Le credenziali le trovi in <span style=\"font-family: monospace\">wp-config.php<\/span> cercando queste righe:<\/p>\n<pre>define('DB_NAME', 'nome_database');\ndefine('DB_USER', 'nome_utente');\ndefine('DB_PASSWORD', 'la_tua_password');\ndefine('DB_HOST', 'localhost');<\/pre>\n<p>Per evitare di digitare la password ogni volta, puoi passarla direttamente nel comando (meno sicuro ma utile per gli script automatici):<\/p>\n<pre>mysqldump -u nome_utente -pla_tua_password nome_database &gt; ~\/backup-db-$(date +%Y%m%d).sql<\/pre>\n<p>Nota: non c&#8217;\u00e8 spazio tra <span style=\"font-family: monospace\">-p<\/span> e la password. Per comprimere direttamente il dump:<\/p>\n<pre>mysqldump -u nome_utente -p nome_database | gzip &gt; ~\/backup-db-$(date +%Y%m%d).sql.gz<\/pre>\n<h2>Script completo per backup automatico<\/h2>\n<p>Puoi combinare file e database in un unico script bash. Crea un file <span style=\"font-family: monospace\">backup-wp.sh<\/span>:<\/p>\n<pre>#!\/bin\/bash\nWP_PATH=\"\/var\/www\/html\"\nBACKUP_DIR=\"$HOME\/backups\"\nDATE=$(date +%Y%m%d-%H%M)\nDB_NAME=\"nome_database\"\nDB_USER=\"nome_utente\"\nDB_PASS=\"la_tua_password\"\n\nmkdir -p $BACKUP_DIR\n\n# Backup database\nmysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip &gt; $BACKUP_DIR\/db-$DATE.sql.gz\n\n# Backup file\ntar -czf $BACKUP_DIR\/files-$DATE.tar.gz -C $WP_PATH --exclude='wp-content\/cache' .\n\n# Elimina backup pi\u00f9 vecchi di 30 giorni\nfind $BACKUP_DIR -type f -mtime +30 -delete\n\necho \"Backup completato: $DATE\"<\/pre>\n<p>Rendi lo script eseguibile con <span style=\"font-family: monospace\">chmod +x backup-wp.sh<\/span> e schedulalo con crontab per esecuzione automatica giornaliera:<\/p>\n<pre>crontab -e\n# Aggiungi questa riga per backup ogni notte alle 3:00\n0 3 * * * \/home\/utente\/backup-wp.sh &gt;&gt; \/home\/utente\/backup.log 2&gt;&amp;1<\/pre>\n<h2>Backup con WP-CLI da terminale<\/h2>\n<p>Se sul server \u00e8 installato <strong>WP-CLI<\/strong>, puoi usarlo per esportare il database in formato nativo WordPress. Il comando <span style=\"font-family: monospace\">wp db export<\/span> funziona come mysqldump ma non richiede di conoscere le credenziali del database, perch\u00e9 le legge direttamente da wp-config.php:<\/p>\n<pre>wp db export ~\/backup-db-$(date +%Y%m%d).sql --path=\/var\/www\/html\/<\/pre>\n<p>WP-CLI offre anche comandi utili per la manutenzione pre-backup. Ad esempio, puoi pulire i dati transient e le revisioni prima di esportare, riducendo la dimensione del database:<\/p>\n<pre># Elimina tutti i transient scaduti\nwp transient delete --expired --path=\/var\/www\/html\/\n\n# Elimina le revisioni vecchie degli articoli\nwp post delete $(wp post list --post_type='revision' --format=ids --path=\/var\/www\/html\/) --path=\/var\/www\/html\/<\/pre>\n<p>Questo passaggio opzionale ti permette di ottenere un backup del database pi\u00f9 leggero e pulito, specialmente su siti con molti articoli e plugin che generano transient.<\/p>\n<h2>Considerazioni sulla sicurezza dei backup<\/h2>\n<p>I file di backup contengono dati sensibili: credenziali del database, chiavi di sicurezza, email degli utenti e potenzialmente dati personali. Per questo motivo, segui queste regole fondamentali:<\/p>\n<ul>\n<li><strong>Non salvare i backup nella cartella pubblica:<\/strong> mai lasciare i file di backup in <span style=\"font-family: monospace\">wp-content\/<\/span> o in qualsiasi cartella accessibile dal web. Salvali sempre nella home directory o in una cartella protetta.<\/li>\n<li><strong>Imposta i permessi corretti:<\/strong> i file di backup dovrebbero avere permessi 600 (solo il proprietario pu\u00f2 leggere e scrivere).<\/li>\n<li><strong>Cripta i backup sensibili:<\/strong> per siti che gestiscono dati personali (<a href=\"https:\/\/soccorsowp.it\/blog\/woodmart-tema-woocommerce-multipurpose\/\">ecommerce<\/a>, aree riservate), considera di crittografare i backup con GPG prima di trasferirli.<\/li>\n<li><strong>Ruota i backup:<\/strong> conserva almeno gli ultimi 30 giorni di backup, ma elimina quelli pi\u00f9 vecchi per risparmiare spazio e ridurre l&#8217;esposizione.<\/li>\n<\/ul>\n<h2>Scaricare il backup in locale<\/h2>\n<p>Dopo aver creato il backup sul server, \u00e8 buona pratica scaricarlo in locale o trasferirlo su un servizio cloud. Puoi usare <span style=\"font-family: monospace\">scp<\/span> dal tuo computer:<\/p>\n<pre>scp utente@server:~\/backups\/db-20260327-0300.sql.gz .\/\nscp utente@server:~\/backups\/files-20260327-0300.tar.gz .\/<\/pre>\n<p>In alternativa, puoi usare <span style=\"font-family: monospace\">rsync<\/span> per sincronizzare l&#8217;intera cartella dei backup con una cartella locale, trasferendo solo i file nuovi o modificati:<\/p>\n<pre>rsync -avz utente@server:~\/backups\/ .\/backup-locale\/<\/pre>\n<h2>Trasferire il backup su storage esterno<\/h2>\n<p>Per la massima sicurezza, i backup dovrebbero essere conservati anche fuori dal server. Se il server ha un problema hardware o viene compromesso, i backup locali potrebbero andare persi. Puoi configurare il trasferimento automatico verso servizi di cloud storage come Amazon S3, Google Cloud Storage o un semplice server FTP esterno. Con <span style=\"font-family: monospace\">rclone<\/span>, uno strumento <a href=\"https:\/\/soccorsowp.it\/blog\/automattic-e-beeper-unalleanza-per-rivoluzionare-la-messaggistica\/\">open source<\/a> per sincronizzare file con decine di servizi cloud, puoi aggiungere una riga al tuo script di backup per caricare automaticamente gli archivi su un bucket S3 o su Google Drive.<\/p>\n<h2>Verificare l&#8217;integrit\u00e0 del backup<\/h2>\n<p>Un backup non testato \u00e8 un backup inutile. Verifica che gli archivi non siano corrotti:<\/p>\n<pre># Verifica archivio tar.gz\ntar -tzf backup-wordpress-20260327.tar.gz &gt; \/dev\/null &amp;&amp; echo \"OK\" || echo \"CORROTTO\"\n\n# Verifica dump SQL\ngunzip -t backup-db-20260327.sql.gz &amp;&amp; echo \"OK\" || echo \"CORROTTO\"<\/pre>\n<p>Periodicamente, prova a ripristinare il backup su un ambiente di test per confermare che tutto funzioni correttamente. Un backup che non si pu\u00f2 ripristinare non serve a nulla.<\/p>\n<h2>Serve aiuto con i backup?<\/h2>\n<p>Se non hai accesso SSH o preferisci una soluzione gestita, il team di <strong>SoccorsoWP<\/strong> pu\u00f2 configurare un sistema di backup automatico per il tuo sito con archiviazione sicura e verifica periodica. <a href=\"https:\/\/soccorsowp.it\/ticket\/\">Apri un ticket<\/a> e proteggi i tuoi dati.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come eseguire un backup WordPress via SSH e terminale Fare il backup di WordPress via SSH \u00e8 il metodo pi\u00f9 veloce e affidabile quando hai&#8230;<\/p>\n","protected":false},"author":1,"featured_media":25696,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Come eseguire un backup WordPress via SSH e terminale","_seopress_titles_desc":"Guida pratica per fare backup di WordPress via SSH: comandi per file e database, script automatico, cron job e verifica integrit\u00e0.","_seopress_robots_index":"","footnotes":""},"categories":[1697],"tags":[],"class_list":{"0":"post-25695","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-backup-e-ripristino"},"_links":{"self":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25695","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/comments?post=25695"}],"version-history":[{"count":1,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25695\/revisions"}],"predecessor-version":[{"id":26196,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25695\/revisions\/26196"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media\/25696"}],"wp:attachment":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media?parent=25695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/categories?post=25695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/tags?post=25695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}