Ho creato un plugin per flatpress che permette di scaricare un archivio della cartella fp-contents, in modo da avere spesso una specie di backup incrementale (in quanto è la cartella che subisce più cambiamenti) con facilità.
Inoltre l’FTP di AlterVista (il mio hoster) è abbastanza lento, così il metodo di download HTTP è migliore, anche perché permette di poter usare anche degli script bash con wget.
Il formato dell’archivio è lo zip.
Una volta era un .tar.gz ma con lo zip ho meno problemi di copyright e anche di classe di creazione, in quanto ho usato quella di PhpMyAdmin che è fatta apposta per mandare direttamente i backup al browser ed è rilasciata in GPLv2.
Per poter scaricare il backup bisogna passare per GET la variabile backup con contenuto get al file index.php o admin.php.
In pratica puntate il browser a http://www.miosito.tld/?backup=get o http://www.miosito.tld/admin.php?backup=get.
Vi lascerà scaricare il file se avete fatto il login al pannello di controllo di flatpress oppure se mettete voi degli altri sistemi di autenticazione.
Per aggiungerli vi basta creare nella stessa directory del file plugin.backup.php un file auth_*.php con al posto di asterisco un nome che volete dare all’autenticazione.
Dentro a quel file, potete fare tutto quello che volete, basta che ci sia la funzione backup_auth_*() con al posto di * la stessa cosa che avete inserito al posto dell’altro asterisco.
Io ho per esempio implementato un’autenticazione HTTP però basata su altervista con PHP 5, però potete facilmente adattarla alle vostre esigenze.
File auth_avphp5.php:
<?php function backup_auth_avphp5() { if(@$_SERVER['HTTP_USER_AGENT']!='Mio_user_agent') return false; if(empty($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) { header('WWW-Authenticate: Basic realm="VDFN Backup System"'); die(print_r($_SERVER, 1)); } else { list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 6))); $username=$_SERVER['PHP_AUTH_USER']; $password=$_SERVER['PHP_AUTH_PW']; } return user_login($username, $password); }
Faccio notare la riga 3: si vede che faccio un controllo sul browser, infatti così ho una specie di password in più.
Come username e password devo mettere i miei di flatpress.
Per scaricare il backup, uso uno script bash che tengo nella chiavetta USB molto molto facile:
#!/bin/bash cd "`dirname "$0"`" SITE="http://www.miosito.tld/?backup=get" echo -n 'Download del backup da ' echo $SITE echo '----------------------------' echo 'Inserire nome utente:' read WGET_UN echo 'Inserire la password:' read -s WGET_PW wget $SITE --http-user=$WGET_UN --http-passwd=$WGET_PW -U "Mio_user_agent" -O backup_`date +%Y%m%d%H%M%S`.zip cd - > /dev/null
Praticamente scarica dalla variabile SITE il backup, ma prima vi chiede username e password, in modo che se qualcuno trova il file per sbaglio non può far niente.
Prima di lasciarvi al download vi dico che cambiando la linea 15 del file plugin.backup.php ($this->_directory=FP_CONTENT;
) potete facilmente scaricare anche una cartella diversa da FP_CONTENT, come tutto il sito.
Licenza: GNU GPLv2
Download: Backup v2.0 (formato tar.gz).
14 commenti
Come si fa ad impostare che faccia il backup con?backup dopo il link? a me tempo fa lo faceva.. adesso non più
Devi fare backup=get… È la stessa cosa in pratica!
Ciao Piero, questo errore che ottengo
significa che non ho abbastanza spazio sul server per creare il file di backup?
Sì, intende nella RAM.
Io ho da un po' di tempo cambiato qualche linea del plugin per selezionare solo qualche cartella di preciso (non quella delle immagini, ad esempio).
Allora per farlo funzionare ho personalizzato la cartella oggetto del backup, andando a scrivere, nella riga 15,
Adesso mi crea il file zip, ma è vuoto… 😭
Devi fare
E per mettere più cartelle? separo i valori con virgola, tipo così
?
No, ci vuole una modifica leggermente diversa…
Devi metterle in un array e poi per ogni elemento fare la lista…
Perché non usi ancora il plugin APOD?
Lo sto usando, ma non fa vedere l'immagine… è quello più in basso dei due
Sì vede che non hai abilitato la whitelist cURL 😊
'n so manco 'os'è 😊
Quello che su Altervista richiede l'invio dell'SMS.
Sai mica come fare per abilitare la funzione?
Fatto, scusa, la guida di altervista fa caà