Cover Image

Bludit automatisert backup

 Sun 2023-01-08    Kode

Bludits automatiserte backup

Hvis man har en blogg er det lurt å ta backup av denne med jevne mellomrom slik at man har en måte å få alt tilbake på når noe går galt. Når det gjelder IT er det aldri snakk om hvis noe går galt, men når. Disker dør, servere dør, hostingleverandører forsvinner/blir utsatt for ransomware/blir kjøpt opp og lagt ned, etc.

Jeg har min egen server og er dermed ansvarlig for alt som skjer med denne selv - OS-oppgraderinger, programoppdateringer, webserver, bloggsystem, sikkerhet, backup - the works.

Når det gjelder Bludit har jeg basert meg på å ta en backup etter hver gang jeg publiserer noe. Dette har fungert greit så langt siden jeg publiserer lite, men det er jo teit å gjøre det sånn når det kan automatiseres.

Siden Bludit er et databaseløst bloggsystem er det heldigvis enkelt å ta backup. Lag et script for å zippe opp hele bludit-mappen, og sleng det scriptet inn i crontab.

Her er scriptet:

<!--?php

$rootPath = realpath('./blog/');

$today = date("Y-m-d-H-i-s");
$zipFile = "./blog-".$today.".zip";

$zip = new ZipArchive();
$zip--->open($zipFile, ZipArchive::CREATE | ZipArchive::OVERWRITE);

$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($rootPath),
    RecursiveIteratorIterator::LEAVES_ONLY
);

foreach ($files as $name => $file) {
    // Skip directories (they would be added automatically)
    if (!$file->isDir()) {
        // Get real and relative path for current file
        $filePath = $file->getRealPath();
        $relativePath = substr($filePath, strlen($rootPath) + 1);

        // Add current file to archive
        $zip->addFile($filePath, $relativePath);
    }
}

// Zip archive will be created only after closing object
$zip->close();

echo $today . " backup done";