backup | server backup

Server Backup Script


Create a backup script (given below).

/usr/local/bin/snapshot.php

Make it executable:

sudo chmod 755 /usr/local/bin/snapshot.php


#!/usr/bin/php
<?php 

$dest='/mnt/mount/snapshot/';

$source[]='/var/www/html/website1/';
$source[]='/var/www/html/website2/';
$source[]='/var/www/html/website3/';
$source[]='/var/www/html/website4/';
$source[]='/etc/';

function comp($str){return '7za a -mmt=on -mx0 -tzip '.$GLOBALS['dest'].basename($str).'.zip'.' '.$str;}
$commands = array_map('comp',$source);
foreach ($commands as $cmd){exec($cmd);}

exit();
?>

Edit crontab:

sudo crontab -e

Add the line:

30 3 * * * /usr/local/bin/snapshot.php


Create a logrotate config file (given below):

sudo nano /etc/logrotate.d/snapshot


/mnt/mount/snapshot/*.zip {
    rotate 30 
    daily
    nocompress
    dateext  
    dateformat _%Y-%m-%d
    extension .eski   
    missingok
}