class backup_migrate_files_destination_archivesource in Backup and Migrate 7.3
Same name and namespace in other branches
- 8.3 includes/sources.archivesource.inc \backup_migrate_files_destination_archivesource
- 6.3 includes/sources.archivesource.inc \backup_migrate_files_destination_archivesource
A destination type for saving locally to the server.
Hierarchy
- class \backup_migrate_item
Expanded class hierarchy of backup_migrate_files_destination_archivesource
1 string reference to 'backup_migrate_files_destination_archivesource'
- backup_migrate_backup_migrate_source_subtypes in includes/
sources.inc - Implements hook_backup_migrate_source_subtypes().
File
- includes/
sources.archivesource.inc, line 19 - A destination type for saving locally to the server.
View source
class backup_migrate_files_destination_archivesource extends backup_migrate_destination_filesource {
public $supported_ops = array(
'source',
);
/**
*
*/
public function type_name() {
return t("Site Archive Source");
}
/**
* Declares the current files directory as a backup source..
*/
public function sources() {
$out = array();
$out['archive'] = backup_migrate_create_destination('archive', array(
'machine_name' => 'archive',
'location' => '.',
'name' => t('Entire Site (code, files & DB)'),
'show_in_list' => FALSE,
));
return $out;
}
/**
* Returns a list of backup filetypes.
*/
public function file_types() {
return array(
"sitearchive" => array(
"extension" => "sitearchive.tar",
"filemime" => "application/x-tar",
"backup" => TRUE,
"restore" => FALSE,
),
);
}
/**
* Gets the form for the settings for this destination.
*/
public function backup_settings_default() {
$out = parent::backup_settings_default();
$excludes = explode("\n", $out['exclude_filepaths']);
foreach ($excludes as $i => $exclude) {
$excludes[$i] = 'public://' . $exclude;
}
$excludes[] = 'private://backup_migrate';
$excludes[] = conf_path() . '/settings.php';
$excludes[] = file_directory_temp();
return array(
'exclude_filepaths' => implode("\n", $excludes),
);
}
/**
* Backup from this source.
*/
public function _backup_to_file_php($file, $settings) {
if ($this
->check_libs()) {
$base_dir = $this
->get_realpath();
$excluded_paths = empty($settings->filters['exclude_filepaths']) ? '' : $settings->filters['exclude_filepaths'];
$exclude = $this
->get_excluded_paths($settings);
$files = $this
->get_files_to_backup($this
->get_realpath(), $settings, $exclude);
if ($files) {
$manifest = $this
->generate_manifest();
$db = $this
->get_db();
$file
->push_type('sitearchive');
$gz = new Archive_Tar($file
->filepath(), FALSE);
$gz
->addModify(array(
$manifest,
), $file->name . '/', dirname($manifest));
$gz
->addModify($files, $file->name . '/docroot', $base_dir);
$gz
->addModify($db, $file->name . '/', dirname($db));
unlink($manifest);
rmdir(dirname($manifest));
unlink($db);
rmdir(dirname($db));
return $file;
}
backup_migrate_backup_fail('No files available.', array(), $settings);
return FALSE;
}
return FALSE;
}
/**
* Backup from this source.
*/
public function _backup_to_file_cli($file, $settings) {
if (!empty($settings->filters['use_cli']) && function_exists('backup_migrate_exec') && function_exists('escapeshellarg')) {
$excluded_paths = empty($settings->filters['exclude_filepaths']) ? '' : $settings->filters['exclude_filepaths'];
foreach ($this
->get_excluded_paths($excluded_paths) as $path) {
$exclude[] = '--exclude=' . escapeshellarg($path);
}
$exclude = implode(' ', $exclude);
// Create a symlink in a temp directory so we can rename the file in the
// archive.
$temp = backup_migrate_temp_directory();
$manifest = $this
->generate_manifest();
$db = $this
->get_db();
rename($db, $temp . '/database.sql');
rename($manifest, $temp . '/MANIFEST.ini');
$file
->push_type('sitearchive');
$link = $temp . '/docroot';
$input = realpath($this
->get_location());
backup_migrate_exec("ln -s %input %link; tar --dereference -C %temp -rf %output {$exclude} .", array(
'%output' => $file
->filepath(),
'%input' => $input,
'%temp' => $temp,
'%link' => $link,
));
return $file;
}
return FALSE;
}
/**
* Generates a manifest file.
*/
public function generate_manifest() {
$info = array(
'Global' => array(
'datestamp' => time(),
'formatversion' => '2011-07-02',
'generator' => 'Backup and Migrate (http://drupal.org/project/backup_migrate)',
'generatorversion' => BACKUP_MIGRATE_VERSION,
),
'Site 0' => array(
'version' => VERSION,
'name' => variable_get('site_name', ''),
'docroot' => 'docroot',
'sitedir' => 'docroot/' . conf_path(),
'database-file-default' => 'database.sql',
'database-file-driver' => 'mysql',
),
);
if ($private = variable_get('file_private_path', FALSE)) {
$info['Site 0']['files-private'] = 'docroot/' . $private;
}
$info['Site 0']['files-public'] = 'docroot/' . variable_get('file_public_path', FALSE);
$ini = $this
->_array_to_ini($info);
$tmpdir = backup_migrate_temp_directory();
$filepath = $tmpdir . '/MANIFEST.ini';
file_put_contents($filepath, $ini);
return $filepath;
}
/**
* Gets a database dump to add to the archive.
*/
public function get_db() {
require_once dirname(__FILE__) . '/destinations.inc';
require_once dirname(__FILE__) . '/files.inc';
require_once dirname(__FILE__) . '/filters.inc';
require_once dirname(__FILE__) . '/profiles.inc';
$file = new backup_file();
// Clone the default settings so we can make changes without them leaking
// out of this function.
$settings = clone _backup_migrate_profile_saved_default_profile();
$settings->source_id = 'db';
$settings->filters['compression'] = 'none';
// Execute the backup on the db with the default settings.
$file = backup_migrate_filters_backup($file, $settings);
// Generate a tmp file with the correct final title (because ArchiveTar
// doesn't seem to allow renaming).
$tmpdir = backup_migrate_temp_directory();
$filepath = $tmpdir . '/database.sql';
rename($file
->filepath(), $filepath);
return $filepath;
}
/**
* Restores to this source.
*/
public function _restore_from_file_php($file, &$settings) {
$success = FALSE;
if ($this
->check_libs()) {
$from = $file
->pop_type();
$temp = backup_migrate_temp_directory();
$tar = new Archive_Tar($from
->filepath());
$tar
->extractModify($temp, $file->name);
// Parse the manifest.
$manifest = $this
->read_manifest($temp);
// Currently only the first site in the archive is supported.
$site = $manifest['Site 0'];
$docroot = $temp . '/' . $site['docroot'];
$sqlfile = $temp . '/' . $site['database-file-default'];
$filepath = NULL;
if (isset($site['files-private'])) {
$filepath = $temp . '/' . $site['files-private'];
}
elseif (isset($site['files-public'])) {
$filepath = $temp . '/' . $site['files-public'];
}
// Move the files from the temp directory.
if ($filepath && file_exists($filepath)) {
_backup_migrate_move_files($filepath, variable_get('file_public_path', conf_path() . '/files'));
}
else {
_backup_migrate_message('Files were not restored because the archive did not seem to contain a files directory or was in a format that Backup and Migrate couldn\'t read', array(), 'warning');
}
// Restore the sql db.
if ($sqlfile && file_exists($sqlfile)) {
$db_settings = clone $settings;
$db_settings->source_id = 'db';
$file = new backup_file(array(
'filepath' => $sqlfile,
));
$success = backup_migrate_filters_restore($file, $db_settings);
}
else {
_backup_migrate_message('The database was not restored because the archive did not seem to contain a database backup or was in a format that Backup and Migrate couldn\'t read', array(), 'warning');
}
if ($docroot) {
_backup_migrate_message('Backup and Migrate cannot restore the php code of the site for security reasons. You will have to copy the code to the server by hand if you wish to restore the full site.', array(), 'warning');
}
return $success && $file;
}
return FALSE;
}
/**
* Restores to this source.
*/
public function _restore_from_file_cli($file, &$settings) {
// @todo implement the cli version of the restore.
return FALSE;
}
/**
* Generates a manifest file.
*/
public function read_manifest($directory) {
// Assume some defaults if values ore the manifest is missing.
$defaults = array(
'docroot' => 'docroot',
'database-file-default' => 'database.sql',
'database-file-driver' => 'mysql',
);
$out = $this
->_ini_to_array($directory . '/MANIFEST.ini');
// Set the defaults.
$out['Site 0'] = isset($out['Site 0']) ? $out['Site 0'] : array();
$out['Site 0'] += $defaults;
return $out;
}
/**
* Converts an associated array to an ini format string.
*
* Only allows 2 levels of depth to allow parse_ini_file to parse.
*/
public function _array_to_ini($sections) {
$content = "";
foreach ($sections as $section => $data) {
$content .= '[' . $section . ']' . "\n";
foreach ($data as $key => $val) {
$content .= $key . " = \"" . $val . "\"\n";
}
$content .= "\n";
}
return $content;
}
/**
* Converts an associated array to an ini format string.
*
* Only allows 2 levels of depth to allow parse_ini_file to parse.
*/
public function _ini_to_array($path) {
return parse_ini_file($path, TRUE);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
backup_migrate_destination_filesource:: |
public | function |
Get the form for the backup settings for this destination. Overrides backup_migrate_location:: |
|
backup_migrate_destination_filesource:: |
public | function | Backup from this source. | |
backup_migrate_destination_filesource:: |
public | function | Checks that the required libraries are installed. | |
backup_migrate_destination_filesource:: |
public | function |
Gets the form for the settings for the files destination. Overrides backup_migrate_location:: |
|
backup_migrate_destination_filesource:: |
public | function | Breaks the excluded paths string into a usable list of paths. | |
backup_migrate_destination_filesource:: |
public | function | Gets a list of files to backup from the given set if dirs. | |
backup_migrate_destination_filesource:: |
public | function | Get the file location. | |
backup_migrate_destination_filesource:: |
public | function | Restore to this source. | |
backup_migrate_files_destination_archivesource:: |
public | property |
Overrides backup_migrate_destination_filesource:: |
|
backup_migrate_files_destination_archivesource:: |
public | function |
Gets the form for the settings for this destination. Overrides backup_migrate_destination_filesource:: |
|
backup_migrate_files_destination_archivesource:: |
public | function |
Returns a list of backup filetypes. Overrides backup_migrate_destination_filesource:: |
|
backup_migrate_files_destination_archivesource:: |
public | function | Generates a manifest file. | |
backup_migrate_files_destination_archivesource:: |
public | function | Gets a database dump to add to the archive. | |
backup_migrate_files_destination_archivesource:: |
public | function | Generates a manifest file. | |
backup_migrate_files_destination_archivesource:: |
public | function |
Declares the current files directory as a backup source.. Overrides backup_migrate_destination_filesource:: |
|
backup_migrate_files_destination_archivesource:: |
public | function |
Overrides backup_migrate_destination_filesource:: |
|
backup_migrate_files_destination_archivesource:: |
public | function | Converts an associated array to an ini format string. | |
backup_migrate_files_destination_archivesource:: |
public | function |
Backup from this source. Overrides backup_migrate_destination_filesource:: |
|
backup_migrate_files_destination_archivesource:: |
public | function |
Backup from this source. Overrides backup_migrate_destination_filesource:: |
|
backup_migrate_files_destination_archivesource:: |
public | function | Converts an associated array to an ini format string. | |
backup_migrate_files_destination_archivesource:: |
public | function |
Restores to this source. Overrides backup_migrate_destination_filesource:: |
|
backup_migrate_files_destination_archivesource:: |
public | function |
Restores to this source. Overrides backup_migrate_destination_filesource:: |
|
backup_migrate_item:: |
public | property | ||
backup_migrate_item:: |
public | property | ||
backup_migrate_item:: |
public | property | ||
backup_migrate_item:: |
public | function | Get all of the given items. | |
backup_migrate_item:: |
public | function | Decode a loaded db row (unserialize necessary fields). | |
backup_migrate_item:: |
public | function | Delete the item from the database. | |
backup_migrate_item:: |
public | function | Submit the edit form for the item. | 5 |
backup_migrate_item:: |
public | function | Validate the edit form for the item. | 4 |
backup_migrate_item:: |
public | function | Return as an exported array of values. | |
backup_migrate_item:: |
public | function | Load an existing item from an array. | |
backup_migrate_item:: |
public | function | Return a random (very very likely unique) string id for a new item. | |
backup_migrate_item:: |
public | function | Get the member with the given key. | |
backup_migrate_item:: |
public | function | Get the rendered action links for a destination. | |
backup_migrate_item:: |
public | function | Get the default values for standard parameters. | 2 |
backup_migrate_item:: |
public | function | Get the primary id for this item (if any is set). | |
backup_migrate_item:: |
public | function | Get a table of all items of this type. | 1 |
backup_migrate_item:: |
public | function | Get header for a lost of this type. | |
backup_migrate_item:: |
public | function | Get the machine name field name from the schema. | |
backup_migrate_item:: |
public | function | Get the menu items for manipulating this type. | 2 |
backup_migrate_item:: |
public | function | Get the primary key field title from the schema. | |
backup_migrate_item:: |
public | function | Get the schema for the item type. | |
backup_migrate_item:: |
public | function | Return the fields which must be serialized before saving to the db. | |
backup_migrate_item:: |
public | function | Get the columns needed to list the type. | 1 |
backup_migrate_item:: |
public | function | A particular item. | |
backup_migrate_item:: |
public | function | A particular item. | |
backup_migrate_item:: |
public | function | Load an existing item from an database (serialized) array. | |
backup_migrate_item:: |
public | function | The message to send to the user when confirming the deletion of the item. | |
backup_migrate_item:: |
public | function | Save the item to the database. | |
backup_migrate_item:: |
public | function | Set the primary id for this item (if any is set). | |
backup_migrate_item:: |
public | function | Get the columns needed to list the type. | |
backup_migrate_item:: |
public | function | Return as an array of values. | 1 |
backup_migrate_item:: |
public | function | Make sure this item has a unique id. | |
backup_migrate_item:: |
public | function | Merge parameters with the given defaults. | |
backup_migrate_item:: |
public | function | Set the basic info pulled from the db or generated programatically. | 5 |
backup_migrate_location:: |
public | property |
Overrides backup_migrate_item:: |
1 |
backup_migrate_location:: |
public | property | ||
backup_migrate_location:: |
public | function | Submit the settings form. Any values returned will be saved. | |
backup_migrate_location:: |
public | function | Get the form for the settings for this filter. | |
backup_migrate_location:: |
public | function | Determine if we can read the given file. | 1 |
backup_migrate_location:: |
public | function |
Create a new location of the correct type. Overrides backup_migrate_item:: |
|
backup_migrate_location:: |
public | function |
Get the message to send to the user when confirming the deletion of the item. Overrides backup_migrate_item:: |
1 |
backup_migrate_location:: |
public | function |
Get the action links for a location. Overrides backup_migrate_item:: |
1 |
backup_migrate_location:: |
public | function | 3 | |
backup_migrate_location:: |
public | function |
Get the columns needed to list the type. Overrides backup_migrate_item:: |
|
backup_migrate_location:: |
public | function |
Get a row of data to be used in a list of items of this type. Overrides backup_migrate_item:: |
1 |
backup_migrate_location:: |
public | function | 3 | |
backup_migrate_location:: |
public | function |
Get the name of the item. Overrides backup_migrate_item:: |
|
backup_migrate_location:: |
public | function | Get the type name of this location for display to the user. | |
backup_migrate_location:: |
public | function | Glue a URLs component parts back into a URL. | |
backup_migrate_location:: |
public | function | Does this location support the given operation. | |
backup_migrate_location:: |
public | function | ||
backup_migrate_location:: |
public | function | Remove the given op from the support list. | |
backup_migrate_location:: |
public | function | Get the form for the settings for this filter. | |
backup_migrate_location:: |
public | function | Get the form for the settings for this filter. | |
backup_migrate_location:: |
public | function | Submit the settings form. Any values returned will be saved. | |
backup_migrate_location:: |
public | function | Get the form for the settings for this filter. | |
backup_migrate_location:: |
public | function | ||
backup_migrate_location:: |
public | function | Get the form for the settings for this location type. | 1 |
backup_migrate_location:: |
public | function | Get the form for the settings for this location. | 1 |
backup_migrate_location:: |
public | function | Submit the settings form. Any values returned will be saved. | 1 |
backup_migrate_location:: |
public | function | Validate the form for the settings for this location. | 1 |
backup_migrate_location:: |
public | function | 3 | |
backup_migrate_location:: |
public | function | ||
backup_migrate_location:: |
public | function | Break a URL into it's component parts. | |
backup_migrate_location:: |
public | function | Get a url from the parts. | |
backup_migrate_source:: |
public | property |
Overrides backup_migrate_location:: |
|
backup_migrate_source:: |
public | property |
Overrides backup_migrate_location:: |
|
backup_migrate_source:: |
public | property |
Overrides backup_migrate_location:: |
|
backup_migrate_source:: |
public | property |
Overrides backup_migrate_location:: |
|
backup_migrate_source:: |
public | property |
Overrides backup_migrate_location:: |
|
backup_migrate_source:: |
public | property |
Overrides backup_migrate_location:: |
|
backup_migrate_source:: |
public | function |
Get the available location types. Overrides backup_migrate_location:: |
|
backup_migrate_source:: |
public | function |
This function is not supposed to be called. Overrides backup_migrate_location:: |