HUOM! Voit itse lisätä ja muuttaa sisältöä muokkaa-painikkeiden avulla

 Olet itse vastuussa tämän teoksen käytöstä aiheutuvista vahingoista Lue lisää.

MediaWiki varmuuskopio ohjelma

Kohteesta Wikikko - kansan taitopankki
Loikkaa: valikkoon, hakuun

Johdanto[muokkaa]

Katso tarkempi ohje sivulta Varmuuskopiointi.

<?php

/**
 * @author Nischay Nahata <nischayn22@gmail.com>
 * @license GPL v2 or later
 */

// OSX Mavericks paikallinen tietokanta
// Varmuuskopioi tietokannan, kuvakansion, laajennusosakansion ja LocalSettings.php -tiedoston

error_reporting(E_ERROR | E_PARSE);

// Katso arvot esim. LocalSettings.php -tiedostosta
$settings = array();
$settings['dbPath'] = '/usr/local/mysql/bin/'; // polku paikalliseen tietokantaan
$settings['dbHost'] = 'localhost'; // yleensä localhost
$settings['dbName'] = 'wikidb'; // tietokannan nimi
$settings['dbUser'] = 'tunnus'; // tietokannan käyttäjätunnus
$settings['dbPassword'] = 'salasana';  // tietokannan salasana

// Paras käyttää absoluuttista polkua
// esm. OSX: /Users/kayttajanimi/Sites/mediawiki/varmuuskopiokansio/paiva_varmuuskopiot
// Ohjelma muodostaa kohdehakemistot itse jos ne puuttuvat

// Mediawikin, laajennusosien ja kuvakansion sijainti
$settings['mediawikiDir'] = '/Users/kayttajanimi/Sites/mediawiki/'; // huomaa että loppuu kenoviivaan
$settings['extensionDir'] = '/Users/kayttajanimi/Sites/mediawiki/extensions/'; // huomaa että loppuu kenoviivaan
$settings['uploadDir'] = '/Users/kayttajanimi/Sites/mediawiki/images/'; // huomaa että loppuu kenoviivaan
// Kohdehakemistot varmuuskopioille
$settings['dailybackupsfolder'] = '/Users/kayttajanimi/Documents/Arkisto/wiki/paiva_varmuuskopiot';
$settings['weeklybackupsfolder'] = '/Users/kayttajanimi/Documents/Arkisto/wiki/viikko_varmuuskopiot';
$settings['monthlybackupsfolder'] = '/Users/kayttajanimi/Documents/Arkisto/wiki/kuukausi_varmuuskopiot';

echo "Hei! <br><br>Otetaan varmuuskopio MediaWikin tietokannasta " . $settings['dbName'] . " , laajennusosista, kuvakansiosta ja LocalSettings.php -tiedostosta " . date("Y/m/d") . "<br><br>";

// Jos kohdehakemistoja ei ole olemassa, lisätään ne
if (!file_exists($settings['dailybackupsfolder'])) {
    mkdir( $settings['dailybackupsfolder'], 0777, true);
}

if (!file_exists($settings['weeklybackupsfolder'])) {
    mkdir( $settings['weeklybackupsfolder'], 0777, true);
}

if (!file_exists($settings['monthlybackupsfolder'])) {
    mkdir( $settings['monthlybackupsfolder'], 0777, true);
}

// Muodostetaan väliaikaistiedostot hakemistoon jossa tämä skripti sijaitsee
echo "Muodostetaan tietokannasta varmuuskopio<br>";
exec( $settings['dbPath'] ."mysqldump -u ". $settings['dbUser'] ." -p" . $settings['dbPassword'] . " --default-character-set=binary --database " . $settings['dbName'] . " | gzip > " . $settings['mediawikiDir'] . "mysqldump.sql.gz.tmp"  );

echo "Muodostetaan kuvista, laajennusosista ja LocalSettings.php-tiedostosta varmuuskopio<br>";
exec("tar -cvpzf " . $settings['mediawikiDir'] . "kuvatvarmuuskopio.tar.gz.tmp " . $settings['uploadDir'] . " " . $settings['extensionDir'] . " " . $settings['mediawikiDir'] . "LocalSettings.php" );

// Päivittäisvarmuuskopio
exec( "cp " . $settings['mediawikiDir'] . "mysqldump.sql.gz.tmp " . $settings['dailybackupsfolder']. "/tietokantadump-" . date("Y-m-d") . ".sql.gz" );
exec( "cp " . $settings['mediawikiDir'] . "kuvatvarmuuskopio.tar.gz.tmp " . $settings['dailybackupsfolder']. "/kuvatvarmuuskopio-" . date("Y-m-d") . ".tar.gz" );

// Viikkovarmuuskopio sunnuntaisin
$today = strtotime( 'today', time() );
$week_end = strtotime('next Sunday', time() - 24*60*60); // selvitetään sunnuntaipäivä
if( $week_end == $today )
{
	echo "Tänään on sunnuntai, kopioidaan varmuuskopio myös viikkohakemistoon<br>";
	exec( "cp " . $settings['mediawikiDir'] . "mysqldump.sql.gz.tmp " . $settings['weeklybackupsfolder']. "/tietokantadump-" . date("Y-m-d")  . ".sql.gz" );
        exec( "cp " . $settings['mediawikiDir'] . "kuvatvarmuuskopio.tar.gz.tmp " . $settings['weeklybackupsfolder']. "/kuvatvarmuuskopio-" . date("Y-m-d") . ".tar.gz" );
}

// Kuukausittaisvarmuuskopio kuukauden viimeisenä päivänä
$month_end = (strtotime('next month',strtotime(date('m/01/y'))) - 24*60*60); // selvitetään kuukauden viimeinen päivä
if( $today == $month_end )
{
	echo "Tänään on kuukauden viimeinen päivä, kopioidaan varmuuskopio myös kuukausihakemistoon<br>";
	exec( "cp " . $settings['mediawikiDir'] . "mysqldump.sgl.gz.tmp " . $settings['monthlybackupsfolder']. "/tietokantadump-" . date("Y-m-d")  . ".sql.gz" );
        exec( "cp " . $settings['mediawikiDir'] . "kuvatvarmuuskopio.tar.gz.tmp " . $settings['monthlybackupsfolder']. "/kuvatvarmuuskopio-" . date("Y-m-d") . ".tar.gz" );
}

// Poistetaan vanhat ja väliaikset varmuuskopiot
echo "Poistetaan vanhat ja väliaikaiset varmuuskopiot<br>";
exec("find " .$settings['dailybackupsfolder']. "/tietokantadump*.gz -maxdepth 1 -type f -mtime +7 -delete");
exec("find " .$settings['weeklybackupsfolder']. "/tietokantadump*.gz -maxdepth 1 -type f -mtime +32 -delete");
exec("find " .$settings['monthlybackupsfolder']. "/tietokantadump*.gz -maxdepth 1 -type f -mtime +92 -delete");
exec("find " .$settings['dailybackupsfolder']. "/kuvatvarmuuskopio*.gz -maxdepth 1 -type f -mtime +7 -delete");
exec("find " .$settings['weeklybackupsfolder']. "/kuvatvarmuuskopio*.gz -maxdepth 1 -type f -mtime +32 -delete");
exec("find " .$settings['monthlybackupsfolder']. "/kuvatvarmuuskopio*.gz -maxdepth 1 -type f -mtime +92 -delete");
exec("rm " . $settings['mediawikiDir'] . "mysqldump.sql.gz.tmp ");
exec("rm " . $settings['mediawikiDir'] . "kuvatvarmuuskopio.tar.gz.tmp");

Alkuperäinen ohjelma: https://github.com/nischayn22/mw_backup