PHP Classes

PHP Backup: Backup data using several methods

Recommend this page to a friend!
  Info   View files View files (108)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2024-01-09 (4 days ago) RSS 2.0 feedNot enough user ratingsTotal: 432 This week: 3All time: 6,290 This week: 141Up
Version License PHP version Categories
php-backup 1.0.11MIT/X Consortium ...5.2PHP 5, System information, Unix
Description 

Author

This package can backup data using several methods.

It can read a configuration file in the INI format to determine which data is to be backed up with one or more of the supported backup methods.

The main class creates a task object for each backup method to be executed and passes it parameters that determine which backup observer class needes to be instantiated to implement each backup task.

Currently it provides backup observer classes for taking backups of MySQL data using the mysqldump program, PostgreSQL data using pg_dump, data available via FTP servers using the wget program, filesystem backups using tar and backups over ssh using scp.

Backup programs are run using the pcntl extension, so it should only support Unix like systems.

Additional backup observer classes may be provides to implement new types of backup methods.

A logger class may output information about the performed backup tasks to a file, to the console, or sent by email.

Innovation Award
PHP Programming Innovation award nominee
March 2014
Number 3


Prize: One year server license IP to country, region, city, latitude, longitude, ZIP code, time zone, area code database
Every developer should be concerned with putting reliable backup methods to save their applications data in case something bad happens.

There can be many types of data to backup like files, databases, among other things.

This class provides a general backup solution that can be adapted to backup anything by the means of extensions that can add support to custom backup methods.

Manuel Lemos
Picture of Andi P. Trix
Name: Andi P. Trix <contact>
Classes: 2 packages by
Country: Romania Romania
Innovation award
Innovation award
Nominee: 1x

 

Details

PHP Backup ========== This set of scripts provide a framework for making backups using the PHP language. It was developed and tested in Ubuntu using PHP 5.5.9 but it might work with lower versions. Because it uses `pcntl_fork`, it does not run on Windows platforms. It supports out of the box 6 kind of backups: ftp using `wget`, mysql using `mysqldump`, filesystem and individual directories using `tar`, scp and postgresql. Requirements ------------ * PHP 5.5.9 on *nix platform (it might work with lower PHP versions) * the tar and bzip2 commands used by the directory and filesystem observers; * the wget command used by the ftp observer; * the mysqldump command used by the mysqldump observer; * the scp and sshpass commands used by the ssh observer; * the pg_dump command used by the psql observer; FTP and MySQL backup -------------------- * make the script executable: `chmod +x php-backup` * prepare the ini and the csv file * `cp ftp_and_mysql.ini.dist ftp_and_mysql.ini` * `touch ftp_and_mysql` * add the ftp and mysql login information in your ftp_and_mysql file * run the command: `./php-backup -i ftp_and_mysql.ini` Filesystem backup ----------------- This method iterates through a list of paths defined in a CSV file and it creates archives of each children directories (useful when you have all projects in the same directory). ### Usage * `cp filesystem.ini.dist filesystem.ini` and edit it to suit your needs * `cp filesystem.dist filesystem` * edit `filesystem` and add the parent directories, each on a new line * run the script: `./php-backup -i filesystem.ini` Directories and MySQL backup ---------------------------- This method reads a CSV file with records made out of a path to a project and the mysql info for that project. ### Usage * `cp directories_and_mysql.ini.dist directories_and_mysql.ini` and edit it to suit your needs * `cp directories_and_mysql.dist directories_and_mysql` * edit `directories_and_mysql` and add the project directory and the mysql info on the same line * run the script: `./php-backup -i directories_and_mysql.ini` Directories and PostgreSQL backup ---------------------------- This method reads a CSV file with records made out of a path to a project and the postgresql info for that project. ### Usage * `cp directories_and_postgresql.ini.dist directories_and_postgresql.ini` and edit it to suit your needs * `cp directories_and_postgresql.dist directories_and_postgresql` * edit `directories_and_postgresql` and add the project directory and the postgresql info on the same line * run the script: `./php-backup -i directories_and_postgresql.ini` SSH and MySQL backup ---------------------------- This method reads a CSV file with records made out of ssh login info and the project path on the server together with the mysql info for that project. ### Usage * `cp ssh_and_mysql.ini.dist ssh_and_mysql.ini` and edit it to suit your needs * `cp ssh_and_mysql.dist ssh_and_mysql` * edit `ssh_and_mysql` and add the ssh info and the mysql info on the same line * run the script: `./php-backup -i ssh_and_mysql.ini` **Note**: You can combine the observers in the ini file as you see fit. Extending --------- * create your namespace: `mkdir -p com/example/backup/observers` * `cd com/example/backup/observers` * `vi custom.class.php` * paste this code: ```php <?php namespace Com\Example\Backup\Observers; class Custom implements \SplObserver { protected $name = 'Custom Observer'; public function update(\SplSubject $subject) { //do your thing here } } ``` You might want to extend the `Common` class which already has implemented an `execute` method: ```php <?php namespace Com\Example\Backup\Observers; use Org\Impavidly\Backup\Observers\Common; class Custom extends Common { protected $name = 'Custom Observer'; public function update(\SplSubject $subject) { $command = "<some command>"; $status = $this->execute($subject, $command); return $status; } } ``` * add the observer class to the "observers" section of the ini file: `custom = Com\Example\Backup\Observers\Custom` * add your configuration in a new ini section, something like ``` [custom] name = value ``` accessible in the observer as `$subject->config['custom']['name']` * run the command: `./php-backup -i <some_ini_file>.ini` ### Companies using PHP-Backup * http://webkoenig.ch/ * http://agentur-am-see.ch/

  Files folder image Files  
File Role Description
Files folder imagelog4php (19 files, 8 directories)
Files folder imageorg (1 directory)
Accessible without login Plain text file directories_and_mysql.dist Data Auxiliary data
Accessible without login Plain text file directories_and_mysql.ini.dist Data Auxiliary data
Accessible without login Plain text file directories_and_postgresql.dist Data added postgresql observer
Accessible without login Plain text file directories_and_postgresql.ini.dist Data added postgresql observer
Accessible without login Plain text file filesystem.dist Data Auxiliary data
Accessible without login Plain text file filesystem.ini.dist Data Auxiliary data
Accessible without login Plain text file ftp_and_mysql.dist Data explicit ftp&mysql settings
Accessible without login Plain text file ftp_and_mysql.ini.dist Data explicit ftp&mysql settings
Accessible without login Plain text file LICENSE Lic. Auxiliary data
Accessible without login Plain text file php-backup Data Auxiliary data
Accessible without login Plain text file README.md Doc. Auxiliary data
Accessible without login Plain text file ssh_and_mysql.dist Data Auxiliary data
Accessible without login Plain text file ssh_and_mysql.ini.dist Data Auxiliary data

 Version Control Unique User Downloads Download Rankings  
 100%
Total:432
This week:3
All time:6,290
This week:141Up