{"id":25663,"date":"2026-02-18T10:00:00","date_gmt":"2026-02-18T09:00:00","guid":{"rendered":"https:\/\/soccorsowp.it\/blog\/?p=25663"},"modified":"2026-02-18T10:00:00","modified_gmt":"2026-02-18T09:00:00","slug":"automatizzare-backup-wordpress-cron-job","status":"publish","type":"post","link":"https:\/\/soccorsowp.it\/blog\/automatizzare-backup-wordpress-cron-job\/","title":{"rendered":"Come automatizzare i backup di WordPress con cron job"},"content":{"rendered":"<h1>Come automatizzare i backup di WordPress con cron job<\/h1>\n<p>I plugin di backup sono comodi ma non sono l&#8217;unica opzione. Se vuoi un sistema di backup <strong>indipendente da <a href=\"https:\/\/soccorsowp.it\/blog\/blocco-di-contenuti-opt-in-per-wordpress\/\">WordPress<\/a><\/strong>, che funzioni anche quando il sito \u00e8 down o il plugin ha un problema, i <strong>cron job del server<\/strong> sono la soluzione pi\u00f9 affidabile. Un backup a livello server non dipende dal funzionamento di WordPress, non carica il sito durante la creazione e pu\u00f2 essere personalizzato in ogni dettaglio. In questa guida ti mostro come configurare backup automatici di WordPress usando i cron job del server.<\/p>\n<h2>Perch\u00e9 usare cron job invece di un plugin<\/h2>\n<p>I plugin di backup come UpdraftPlus o BlogVault funzionano bene nella maggior parte dei casi. Ma hanno alcuni limiti intrinseci:<\/p>\n<ul>\n<li><strong>Dipendono da WordPress:<\/strong> se WordPress non funziona (errore fatale, database corrotto, sito hackerato), il plugin di backup non pu\u00f2 eseguire il backup proprio quando ne avresti pi\u00f9 bisogno.<\/li>\n<li><strong>Caricano il server:<\/strong> i plugin eseguono il backup durante le visite o tramite WP-Cron, che si attiva solo quando qualcuno visita il sito. Su siti con poco traffico, i backup possono saltare o ritardare.<\/li>\n<li><strong>Consumano risorse PHP:<\/strong> la creazione di un archivio ZIP di un sito grande pu\u00f2 causare timeout PHP o errori di memoria, soprattutto su hosting condivisi con limiti restrittivi.<\/li>\n<\/ul>\n<p>Un cron job del server supera tutti questi limiti: viene eseguito dal sistema operativo, funziona indipendentemente da WordPress e non ha limiti di memoria o tempo PHP.<\/p>\n<h2>Cos&#8217;\u00e8 un cron job<\/h2>\n<p>Un <strong>cron job<\/strong> \u00e8 un&#8217;attivit\u00e0 programmata che il sistema operativo Linux esegue automaticamente a intervalli regolari. Puoi programmare qualsiasi comando \u2014 uno script di backup, una pulizia dei file temporanei, un&#8217;ottimizzazione del database \u2014 per essere eseguito a un&#8217;ora specifica, ogni giorno, ogni settimana o con qualsiasi altra frequenza.<\/p>\n<p>La sintassi di un cron job \u00e8 composta da cinque campi che definiscono quando eseguire il comando: minuto, ora, giorno del mese, mese e giorno della settimana. Per esempio, <span style=\"font-family: monospace\">0 3 * * *<\/span> significa &#8220;ogni giorno alle 3:00 di notte&#8221;.<\/p>\n<h2>Backup del database con mysqldump<\/h2>\n<p>Il backup del database \u00e8 il componente pi\u00f9 critico: contiene tutti i contenuti, le impostazioni e i dati degli utenti. Il comando <span style=\"font-family: monospace\">mysqldump<\/span> crea un dump SQL completo del database:<\/p>\n<pre>mysqldump -u utente_db -p'password_db' nome_database | gzip &gt; \/backup\/db-$(date +%Y%m%d).sql.gz<\/pre>\n<p>Questo comando esporta l&#8217;intero database, lo comprime con gzip e salva il file con la data nel nome (es. <span style=\"font-family: monospace\">db-20260218.sql.gz<\/span>). La compressione riduce tipicamente le dimensioni del 90%: un database da 100MB diventa un file da 10MB.<\/p>\n<p>Per evitare di esporre la password nel comando, crea un file <span style=\"font-family: monospace\">.my.cnf<\/span> nella home dell&#8217;utente con i permessi 600:<\/p>\n<pre>[mysqldump]\nuser=utente_db\npassword=password_db<\/pre>\n<p>Con questo file, puoi usare mysqldump senza specificare utente e password nel comando, eliminando il rischio che le credenziali appaiano nella lista dei processi o nei log.<\/p>\n<h2>Backup dei file con tar<\/h2>\n<p>Il backup dei file include tutto ci\u00f2 che non \u00e8 nel database: il core di WordPress, i temi, i plugin, le immagini caricate e i file di configurazione. Il comando <span style=\"font-family: monospace\">tar<\/span> crea un archivio compresso:<\/p>\n<pre>tar -czf \/backup\/files-$(date +%Y%m%d).tar.gz -C \/var\/www\/html\/ .<\/pre>\n<p>Per siti di grandi dimensioni, puoi escludere le directory che non servono nel backup (perch\u00e9 scaricabili o rigenerabili):<\/p>\n<pre>tar -czf \/backup\/files-$(date +%Y%m%d).tar.gz \n    --exclude='wp-content\/cache' \n    --exclude='wp-content\/debug.log' \n    --exclude='wp-content\/upgrade' \n    -C \/var\/www\/html\/ .<\/pre>\n<p>Le esclusioni tipiche sono: la cartella cache (rigenerabile), i file di log (non necessari per il ripristino), la cartella upgrade (file temporanei degli aggiornamenti) e eventuali backup creati da plugin nella cartella wp-content.<\/p>\n<h2>Creare uno script di backup completo<\/h2>\n<p>Combinando il backup del database e dei file in un unico script bash, puoi automatizzare l&#8217;intero processo. Crea il file <span style=\"font-family: monospace\">\/usr\/local\/bin\/wp-backup.sh<\/span>:<\/p>\n<pre>#!\/bin\/bash\nBACKUP_DIR=\"\/backup\/wordpress\"\nWP_DIR=\"\/var\/www\/html\"\nDATE=$(date +%Y%m%d_%H%M)\nDB_NAME=\"nome_database\"\n\n# Crea directory backup\nmkdir -p \"$BACKUP_DIR\"\n\n# Backup database\nmysqldump \"$DB_NAME\" | gzip &gt; \"$BACKUP_DIR\/db-$DATE.sql.gz\"\n\n# Backup file\ntar -czf \"$BACKUP_DIR\/files-$DATE.tar.gz\" \n    --exclude='wp-content\/cache' \n    -C \"$WP_DIR\" .\n\n# Elimina backup pi\u00f9 vecchi di 14 giorni\nfind \"$BACKUP_DIR\" -name \"*.gz\" -mtime +14 -delete\n\necho \"Backup completato: $DATE\"<\/pre>\n<p>Rendi lo script eseguibile con <span style=\"font-family: monospace\">chmod +x \/usr\/local\/bin\/wp-backup.sh<\/span>. L&#8217;ultima riga dello script \u00e8 fondamentale: elimina automaticamente i backup pi\u00f9 vecchi di 14 giorni, evitando che lo spazio disco si esaurisca.<\/p>\n<h2>Programmare il cron job<\/h2>\n<p>Per programmare l&#8217;esecuzione automatica dello script, apri il crontab con <span style=\"font-family: monospace\">crontab -e<\/span> e aggiungi una riga. Le programmazioni pi\u00f9 comuni:<\/p>\n<ul>\n<li><strong>Backup giornaliero alle 3:00:<\/strong> <span style=\"font-family: monospace\">0 3 * * * \/usr\/local\/bin\/wp-backup.sh<\/span><\/li>\n<li><strong>Backup solo del database ogni 6 ore:<\/strong> <span style=\"font-family: monospace\">0 *\/6 * * * mysqldump nome_db | gzip &gt; \/backup\/db-$(date +%Y%m%d_%H).sql.gz<\/span><\/li>\n<li><strong>Backup settimanale completo la domenica alle 2:00:<\/strong> <span style=\"font-family: monospace\">0 2 * * 0 \/usr\/local\/bin\/wp-backup.sh<\/span><\/li>\n<\/ul>\n<p>Su pannelli hosting come <strong>Plesk<\/strong>, puoi creare cron job dall&#8217;interfaccia grafica senza dover modificare il crontab manualmente: vai su <span style=\"font-family: monospace\">Strumenti e impostazioni \u2192 Attivit\u00e0 programmate<\/span> (o nella sezione del dominio) e aggiungi una nuova attivit\u00e0.<\/p>\n<h2>Inviare i backup su cloud<\/h2>\n<p>Un backup sullo stesso server del sito \u00e8 meglio di niente, ma non ti protegge dal guasto del server, dal ransomware o dall&#8217;errore del provider. La regola d&#8217;oro \u00e8 avere almeno una copia <strong>fuori dal server<\/strong>.<\/p>\n<p>Puoi aggiungere allo script il caricamento automatico su servizi cloud:<\/p>\n<ul>\n<li><strong>Amazon S3:<\/strong> usando AWS CLI (<span style=\"font-family: monospace\">aws s3 cp file.gz s3:\/\/bucket\/<\/span>), affidabile e economico per l&#8217;archiviazione.<\/li>\n<li><strong>Google Drive:<\/strong> usando rclone, uno strumento da riga di comando che supporta decine di servizi cloud.<\/li>\n<li><strong>SFTP\/SCP:<\/strong> copia su un secondo server con <span style=\"font-family: monospace\">scp file.gz user@server:\/backup\/<\/span> o rsync per trasferimenti incrementali.<\/li>\n<\/ul>\n<p><strong>rclone<\/strong> \u00e8 particolarmente versatile: si configura una volta e permette di copiare file su Google Drive, Dropbox, S3, Backblaze B2 e molti altri servizi con un singolo comando. Aggiungilo allo script di backup per automatizzare il trasferimento.<\/p>\n<h2>Configurare notifiche di errore<\/h2>\n<p>Un backup automatico \u00e8 inutile se fallisce silenziosamente per settimane. Aggiungi una notifica email allo script per essere avvisato in caso di errore. Cron invia automaticamente l&#8217;output dei job via email se configurato con la variabile <span style=\"font-family: monospace\">MAILTO<\/span>:<\/p>\n<pre>MAILTO=\"tuaemail@dominio.it\"\n0 3 * * * \/usr\/local\/bin\/wp-backup.sh 2&gt;&amp;1<\/pre>\n<p>Con questa configurazione, riceverai un&#8217;email ogni volta che lo script produce output (inclusi eventuali errori). Per ricevere email solo in caso di errore, modifica lo script per uscire con codice di errore appropriato e redirect dell&#8217;output standard a \/dev\/null.<\/p>\n<h2>Hai bisogno di aiuto con i backup?<\/h2>\n<p>Configurare un sistema di backup affidabile a livello server richiede accesso SSH e competenze di amministrazione Linux. Se non ti senti sicuro a configurare cron job e script bash, o se vuoi un sistema di backup professionale configurato e testato, il team di <strong><a href=\"https:\/\/soccorsowp.it\/blog\/i-migliori-plugin-woocommerce-per-dominare-il-black-friday\/\">SoccorsoWP<\/a><\/strong> pu\u00f2 implementare una strategia di backup completa per il tuo sito, con archiviazione cloud e notifiche di errore. <a href=\"https:\/\/soccorsowp.it\/ticket\/\">Apri un ticket<\/a> e proteggi il tuo sito con backup affidabili.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come automatizzare i backup di WordPress con cron job I plugin di backup sono comodi ma non sono l&#8217;unica opzione. Se vuoi un sistema di&#8230;<\/p>\n","protected":false},"author":1,"featured_media":25664,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"Backup WordPress automatici con cron job: guida server","_seopress_titles_desc":"Come configurare backup automatici di WordPress con cron job del server: mysqldump, tar, script bash, archiviazione cloud e notifiche errore.","_seopress_robots_index":"","footnotes":""},"categories":[1697],"tags":[],"class_list":{"0":"post-25663","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\/25663","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=25663"}],"version-history":[{"count":1,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25663\/revisions"}],"predecessor-version":[{"id":26095,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25663\/revisions\/26095"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media\/25664"}],"wp:attachment":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media?parent=25663"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/categories?post=25663"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/tags?post=25663"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}