Piero V.

Plugin Backup (v2.0) [Flatpress]

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