PHP Classes
elePHPant
Icontem

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
2014-08-04 (1 year ago) RSS 2.0 feedNot yet rated by the usersTotal: 379 All time: 6,333 This week: 1,044Up
Version License PHP version Categories
php-backup 1.0.2MIT/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
Age: ???
All time rank: 242752 in Romania Romania
Week rank: 1373 Up33 in Romania Romania Up
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

  Files folder image Files  /  log4php  
File Role Description
Files folder imageappenders (14 files)
Files folder imageconfigurators (5 files)
Files folder imagefilters (4 files)
Files folder imagehelpers (4 files)
Files folder imagelayouts (6 files)
Files folder imagepattern (24 files)
Files folder imagerenderers (4 files)
Files folder imagexml (1 file)
  Accessible without login Plain text file LICENSE Lic. License text
  Plain text file Logger.php Class Class source
  Plain text file LoggerAppender.php Class Class source
  Plain text file LoggerAppenderPool.php Class Class source
  Plain text file LoggerAutoloader.php Class Class source
  Plain text file LoggerConfigurable.php Class Class source
  Plain text file LoggerConfigurator.php Class Class source
  Plain text file LoggerException.php Class Class source
  Plain text file LoggerFilter.php Class Class source
  Plain text file LoggerHierarchy.php Class Class source
  Plain text file LoggerLayout.php Class Class source
  Plain text file LoggerLevel.php Class Class source
  Plain text file LoggerLocationInfo.php Class Class source
  Plain text file LoggerLoggingEvent.php Class Class source
  Plain text file LoggerMDC.php Class Class source
  Plain text file LoggerNDC.php Class Class source
  Plain text file LoggerReflectionUtils.php Class Class source
  Plain text file LoggerRoot.php Class Class source
  Plain text file LoggerThrowableInformation.php Class Class source

  Files folder image Files  /  log4php  /  appenders  
File Role Description
  Plain text file LoggerAppenderConsole.php Class Class source
  Plain text file LoggerAppenderDailyFile.php Class Class source
  Plain text file LoggerAppenderEcho.php Class Class source
  Plain text file LoggerAppenderFile.php Class Class source
  Plain text file LoggerAppenderFirePHP.php Class Class source
  Plain text file LoggerAppenderMail.php Class Class source
  Plain text file LoggerAppenderMailEvent.php Class Class source
  Plain text file LoggerAppenderMongoDB.php Class Class source
  Plain text file LoggerAppenderNull.php Class Class source
  Plain text file LoggerAppenderPDO.php Class Class source
  Plain text file LoggerAppenderPhp.php Class Class source
  Plain text file LoggerAppenderRollingFile.php Class Class source
  Plain text file LoggerAppenderSocket.php Class Class source
  Plain text file LoggerAppenderSyslog.php Class Class source

  Files folder image Files  /  log4php  /  configurators  
File Role Description
  Plain text file LoggerConfigurationAdapter.php Class Class source
  Plain text file LoggerConfigurationAdapterINI.php Class Class source
  Plain text file LoggerConfigurationAdapterPHP.php Class Class source
  Plain text file LoggerConfigurationAdapterXML.php Class Class source
  Plain text file LoggerConfiguratorDefault.php Class Class source

  Files folder image Files  /  log4php  /  filters  
File Role Description
  Plain text file LoggerFilterDenyAll.php Class Class source
  Plain text file LoggerFilterLevelMatch.php Class Class source
  Plain text file LoggerFilterLevelRange.php Class Class source
  Plain text file LoggerFilterStringMatch.php Class Class source

  Files folder image Files  /  log4php  /  helpers  
File Role Description
  Plain text file LoggerFormattingInfo.php Class Class source
  Plain text file LoggerOptionConverter.php Class Class source
  Plain text file LoggerPatternParser.php Class Class source
  Plain text file LoggerUtils.php Class Class source

  Files folder image Files  /  log4php  /  layouts  
File Role Description
  Plain text file LoggerLayoutHtml.php Class Class source
  Plain text file LoggerLayoutPattern.php Class Class source
  Plain text file LoggerLayoutSerialized.php Class Class source
  Plain text file LoggerLayoutSimple.php Class Class source
  Plain text file LoggerLayoutTTCC.php Class Class source
  Plain text file LoggerLayoutXml.php Class Class source

  Files folder image Files  /  log4php  /  pattern  
File Role Description
  Plain text file LoggerPatternConverter.php Class Class source
  Plain text file LoggerPatternConverterClass.php Class Class source
  Plain text file LoggerPatternConverterCookie.php Class Class source
  Plain text file LoggerPatternConverterDate.php Class Class source
  Plain text file LoggerPatternConverterEnvironment.php Class Class source
  Plain text file LoggerPatternConverterFile.php Class Class source
  Plain text file LoggerPatternConverterLevel.php Class Class source
  Plain text file LoggerPatternConverterLine.php Class Class source
  Plain text file LoggerPatternConverterLiteral.php Class Class source
  Plain text file LoggerPatternConverterLocation.php Class Class source
  Plain text file LoggerPatternConverterLogger.php Class Class source
  Plain text file LoggerPatternConverterMDC.php Class Class source
  Plain text file LoggerPatternConverterMessage.php Class Class source
  Plain text file LoggerPatternConverterMethod.php Class Class source
  Plain text file LoggerPatternConverterNDC.php Class Class source
  Plain text file LoggerPatternConverterNewLine.php Class Class source
  Plain text file LoggerPatternConverterProcess.php Class Class source
  Plain text file LoggerPatternConverterRelative.php Class Class source
  Plain text file LoggerPatternConverterRequest.php Class Class source
  Plain text file LoggerPatternConverterServer.php Class Class source
  Plain text file LoggerPatternConverterSession.php Class Class source
  Plain text file LoggerPatternConverterSessionID.php Class Class source
  Plain text file LoggerPatternConverterSuperglobal.php Class Class source
  Plain text file LoggerPatternConverterThrowable.php Class Class source

  Files folder image Files  /  log4php  /  renderers  
File Role Description
  Plain text file LoggerRenderer.php Class Class source
  Plain text file LoggerRendererDefault.php Class Class source
  Plain text file LoggerRendererException.php Class Class source
  Plain text file LoggerRendererMap.php Class Class source

  Files folder image Files  /  log4php  /  xml  
File Role Description
  Accessible without login Plain text file log4php.dtd Data Auxiliary data

  Files folder image Files  /  org  
File Role Description
Files folder imageimpavidly (1 directory)

  Files folder image Files  /  org  /  impavidly  
File Role Description
Files folder imagebackup (4 files, 2 directories)

  Files folder image Files  /  org  /  impavidly  /  backup  
File Role Description
Files folder imageexceptions (3 files)
Files folder imageobservers (7 files)
  Plain text file backup.class.php Class Class source
  Plain text file backup.php Class Class source
  Plain text file logger.class.php Class Class source
  Plain text file task.class.php Class Class source

  Files folder image Files  /  org  /  impavidly  /  backup  /  exceptions  
File Role Description
  Plain text file exception.class.php Class Class source
  Plain text file fail_exception.class.php Class Class source
  Plain text file fork_exception.class.php Class Class source

  Files folder image Files  /  org  /  impavidly  /  backup  /  observers  
File Role Description
  Plain text file common.class.php Class Class source
  Plain text file directory.class.php Class Class source
  Plain text file filesystem.class.php Class Class source
  Plain text file ftp.class.php Class Class source
  Plain text file mysqldump.class.php Class Class source
  Plain text file psql.class.php Class added postgresql observer
  Plain text file ssh.class.php Class Class source

 Version Control Unique User Downloads Download Rankings  
 100%
Total:379
This week:0
All time:6,333
This week:1,044Up