Version Description
Changed DB Export and import method to work on all hosting.
Download this release
Release Info
Developer | jcpeden |
Plugin | Backup and Restore WordPress – WPBackItUp Backup Plugin |
Version | 1.5.0 |
Comparing to | |
See all releases |
Code changes from version 1.4.2 to 1.5.0
- index.php +2 -2
- lib/constants.php +2 -2
- lib/functions.php +394 -385
- lib/includes/recurse_zip.php +1 -1
- logs/status.log +1 -1
- readme.txt +209 -203
index.php
CHANGED
@@ -7,13 +7,13 @@
|
|
7 |
* @global object $wpdb
|
8 |
*
|
9 |
* @author jcpeden
|
10 |
-
* @version 1.
|
11 |
*/
|
12 |
/*
|
13 |
Plugin Name: WP Backitup
|
14 |
Plugin URI: http://www.wpbackitup.com
|
15 |
Description: Backup your content, settings, themes, plugins and media in just a few simple clicks.
|
16 |
-
Version: 1.
|
17 |
Author: John Peden
|
18 |
Author URI: http://www.johncpeden.com
|
19 |
License: GPL3
|
7 |
* @global object $wpdb
|
8 |
*
|
9 |
* @author jcpeden
|
10 |
+
* @version 1.5.0
|
11 |
*/
|
12 |
/*
|
13 |
Plugin Name: WP Backitup
|
14 |
Plugin URI: http://www.wpbackitup.com
|
15 |
Description: Backup your content, settings, themes, plugins and media in just a few simple clicks.
|
16 |
+
Version: 1.5.0
|
17 |
Author: John Peden
|
18 |
Author URI: http://www.johncpeden.com
|
19 |
License: GPL3
|
lib/constants.php
CHANGED
@@ -5,11 +5,11 @@
|
|
5 |
* @package WP Backitup
|
6 |
*
|
7 |
* @author jcpeden
|
8 |
-
* @version 1.
|
9 |
* @since 1.0.1
|
10 |
*/
|
11 |
|
12 |
-
if( !defined( 'WPBACKITUP_VERSION' ) ) define( 'WPBACKITUP_VERSION', '1.
|
13 |
|
14 |
if( !defined( 'WPBACKITUP_DIRNAME' ) ) define( 'WPBACKITUP_DIRNAME', dirname( dirname( __FILE__ ) ) );
|
15 |
|
5 |
* @package WP Backitup
|
6 |
*
|
7 |
* @author jcpeden
|
8 |
+
* @version 1.5.0
|
9 |
* @since 1.0.1
|
10 |
*/
|
11 |
|
12 |
+
if( !defined( 'WPBACKITUP_VERSION' ) ) define( 'WPBACKITUP_VERSION', '1.5.0' );
|
13 |
|
14 |
if( !defined( 'WPBACKITUP_DIRNAME' ) ) define( 'WPBACKITUP_DIRNAME', dirname( dirname( __FILE__ ) ) );
|
15 |
|
lib/functions.php
CHANGED
@@ -1,385 +1,394 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* WP Backitup Functions
|
4 |
-
*
|
5 |
-
* @package WP Backitup
|
6 |
-
*
|
7 |
-
* @author jcpeden
|
8 |
-
* @version 1.4.2
|
9 |
-
* @since 1.0.2
|
10 |
-
*/
|
11 |
-
|
12 |
-
// localize the plugin
|
13 |
-
function lang_setup() {
|
14 |
-
global $WPBackitup;
|
15 |
-
load_plugin_textdomain($WPBackitup->namespace, false, dirname(plugin_basename(__FILE__)) . '/lang/');
|
16 |
-
}
|
17 |
-
add_action('after_setup_theme', 'lang_setup');
|
18 |
-
|
19 |
-
// include recurseZip class
|
20 |
-
if( !class_exists( 'recurseZip' ) ) {
|
21 |
-
include_once 'includes/recurse_zip.php';
|
22 |
-
}
|
23 |
-
|
24 |
-
// retrieve our license key from the DB
|
25 |
-
$license_key = trim( $this->get_option( 'license_key' ) );
|
26 |
-
|
27 |
-
//define dbSize function
|
28 |
-
function dbSize($dbname) {
|
29 |
-
mysqli_select_db($dbname);
|
30 |
-
$result = mysqli_query("SHOW TABLE STATUS");
|
31 |
-
$dbsize = 0;
|
32 |
-
while($row = mysqli_fetch_array($result)) {
|
33 |
-
$dbsize += $row["Data_length"] + $row["Index_length"];
|
34 |
-
}
|
35 |
-
return $dbsize;
|
36 |
-
}
|
37 |
-
|
38 |
-
//define formatFileSize function
|
39 |
-
function formatFileSize($bytes)
|
40 |
-
{
|
41 |
-
if ($bytes >= 1073741824)
|
42 |
-
{
|
43 |
-
$bytes = number_format($bytes / 1073741824, 2) . ' GB';
|
44 |
-
}
|
45 |
-
elseif ($bytes >= 1048576)
|
46 |
-
{
|
47 |
-
$bytes = number_format($bytes / 1048576, 2) . ' MB';
|
48 |
-
}
|
49 |
-
elseif ($bytes >= 1024)
|
50 |
-
{
|
51 |
-
$bytes = number_format($bytes / 1024, 2) . ' KB';
|
52 |
-
}
|
53 |
-
elseif ($bytes > 1)
|
54 |
-
{
|
55 |
-
$bytes = $bytes . ' bytes';
|
56 |
-
}
|
57 |
-
elseif ($bytes == 1)
|
58 |
-
{
|
59 |
-
$bytes = $bytes . ' byte';
|
60 |
-
}
|
61 |
-
else
|
62 |
-
{
|
63 |
-
$bytes = '0 bytes';
|
64 |
-
}
|
65 |
-
|
66 |
-
return $bytes;
|
67 |
-
}
|
68 |
-
|
69 |
-
//define dirSize function
|
70 |
-
function dirSize($directory) {
|
71 |
-
$size = 0;
|
72 |
-
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){
|
73 |
-
$size+=$file->getSize();
|
74 |
-
}
|
75 |
-
return $size;
|
76 |
-
}
|
77 |
-
|
78 |
-
//load backup function
|
79 |
-
function backup() {
|
80 |
-
include_once 'includes/backup.php';
|
81 |
-
}
|
82 |
-
add_action('wp_ajax_backup', 'backup');
|
83 |
-
|
84 |
-
//load restore_path function
|
85 |
-
function restore_path() {
|
86 |
-
include_once 'includes/restore_from_path.php';
|
87 |
-
}
|
88 |
-
add_action('wp_ajax_restore_path', 'restore_path');
|
89 |
-
|
90 |
-
//load download function
|
91 |
-
function download() {
|
92 |
-
if(glob(WPBACKITUP_DIRNAME . "/backups/*.zip")) {
|
93 |
-
foreach (glob(WPBACKITUP_DIRNAME . "/backups/*.zip") as $file) {
|
94 |
-
$filename = basename($file);
|
95 |
-
echo 'Download most recent export file: <a href="' .WPBACKITUP_URLPATH. '/backups/' .$filename .'">' .$filename .'</a>';
|
96 |
-
}
|
97 |
-
} else {
|
98 |
-
echo 'No export file available for download. Please create one.';
|
99 |
-
}
|
100 |
-
die();
|
101 |
-
}
|
102 |
-
add_action('wp_ajax_download', 'download');
|
103 |
-
|
104 |
-
//load logreader function
|
105 |
-
function logreader() {
|
106 |
-
$log = WPBACKITUP_DIRNAME .'/logs/status.log';
|
107 |
-
if(file_exists($log) ) {
|
108 |
-
readfile($log);
|
109 |
-
}
|
110 |
-
die();
|
111 |
-
}
|
112 |
-
add_action('wp_ajax_logreader', 'logreader');
|
113 |
-
|
114 |
-
//define create_dir function
|
115 |
-
if(!function_exists('create_dir')) {
|
116 |
-
function create_dir($dir) {
|
117 |
-
if( !is_dir($dir) ) {
|
118 |
-
@mkdir($dir, 0755);
|
119 |
-
}
|
120 |
-
return true;
|
121 |
-
}
|
122 |
-
}
|
123 |
-
|
124 |
-
//Define recusive_copy function
|
125 |
-
if(!function_exists('recursive_copy')) {
|
126 |
-
function recursive_copy($dir, $target_path, $ignore = array( 'cgi-bin','..','._' ) ) {
|
127 |
-
if( is_dir($dir) ) { //If the directory exists
|
128 |
-
if ($dh = opendir($dir) ) {
|
129 |
-
while(($file = readdir($dh)) !== false) { //While there are files in the directory
|
130 |
-
if ( !in_array($file, $ignore) && substr($file, 0, 1) != '.') { //Check the file is not in the ignore array
|
131 |
-
if (!is_dir( $dir.$file ) ) {
|
132 |
-
//Copy files to destination directory
|
133 |
-
$fsrc = fopen($dir .$file,'r');
|
134 |
-
$fdest = fopen($target_path .$file,'w+');
|
135 |
-
$len = stream_copy_to_stream($fsrc,$fdest);
|
136 |
-
fclose($fsrc);
|
137 |
-
fclose($fdest);
|
138 |
-
} else { //If $file is a directory
|
139 |
-
$destdir = $target_path .$file; //Modify the destination dir
|
140 |
-
if(!is_dir($destdir)) { //Create the destdir if it doesn't exist
|
141 |
-
@mkdir($destdir, 0755);
|
142 |
-
}
|
143 |
-
recursive_copy($dir .$file .'/', $target_path .$file .'/', $ignore);
|
144 |
-
}
|
145 |
-
}
|
146 |
-
}
|
147 |
-
closedir($dh);
|
148 |
-
}
|
149 |
-
}
|
150 |
-
return true;
|
151 |
-
}
|
152 |
-
}
|
153 |
-
|
154 |
-
//Define DB backup function
|
155 |
-
if(!function_exists('db_backup')) {
|
156 |
-
function db_backup($user, $pass, $host, $db_name, $path) {
|
157 |
-
|
158 |
-
//set fileName
|
159 |
-
$fileName = 'db-backup.sql' ;
|
160 |
-
|
161 |
-
// Check if directory is already created and has the proper permissions
|
162 |
-
if (!file_exists($path)) {
|
163 |
-
if(!mkdir($path , 0755) ){
|
164 |
-
return false;
|
165 |
-
}
|
166 |
-
}
|
167 |
-
|
168 |
-
if (!is_writable($path)) {
|
169 |
-
if (!chmod($path , 0755) ) {
|
170 |
-
return false;
|
171 |
-
}
|
172 |
-
}
|
173 |
-
|
174 |
-
$mysqli = new mysqli($host , $user , $pass , $db_name) ;
|
175 |
-
if (mysqli_connect_errno()) {
|
176 |
-
return false;
|
177 |
-
}
|
178 |
-
|
179 |
-
// Introduction information
|
180 |
-
$return = '';
|
181 |
-
$return .= "--\n";
|
182 |
-
$return .= "-- WP Backitup Database Backup \n";
|
183 |
-
$return .= "--\n";
|
184 |
-
$return .= '-- Created: ' . date("Y/m/d") . ' on ' . date("h:i") . "\n\n\n";
|
185 |
-
$return = "--\n";
|
186 |
-
$return .= "-- Database : " . $db_name . "\n";
|
187 |
-
$return .= "--\n";
|
188 |
-
$return .= "-- --------------------------------------------------\n";
|
189 |
-
$return .= "-- ---------------------------------------------------\n";
|
190 |
-
$return .= 'SET AUTOCOMMIT = 0 ;' ."\n" ;
|
191 |
-
$return .= 'SET FOREIGN_KEY_CHECKS=0 ;' ."\n" ;
|
192 |
-
$tables = array() ;
|
193 |
-
|
194 |
-
// Exploring what tables this database has
|
195 |
-
$result = $mysqli->query('SHOW TABLES' ) ;
|
196 |
-
|
197 |
-
// Cycle through "$result" and put content into an array
|
198 |
-
while ($row = $result->fetch_row()) {
|
199 |
-
$tables[] = $row[0] ;
|
200 |
-
}
|
201 |
-
|
202 |
-
// Cycle through each table
|
203 |
-
foreach($tables as $table) {
|
204 |
-
// Get content of each table
|
205 |
-
$result = $mysqli->query('SELECT * FROM '. $table) ;
|
206 |
-
|
207 |
-
// Get number of fields (columns) of each table
|
208 |
-
$num_fields = $mysqli->field_count ;
|
209 |
-
|
210 |
-
// Add table information
|
211 |
-
$return .= "--\n" ;
|
212 |
-
$return .= '-- Tabel structure for table `' . $table . '`' . "\n" ;
|
213 |
-
$return .= "--\n" ;
|
214 |
-
$return.= 'DROP TABLE IF EXISTS `'.$table.'`;' . "\n" ;
|
215 |
-
|
216 |
-
// Get the table-shema
|
217 |
-
$shema = $mysqli->query('SHOW CREATE TABLE '.$table) ;
|
218 |
-
|
219 |
-
// Extract table shema
|
220 |
-
$tableshema = $shema->fetch_row() ;
|
221 |
-
|
222 |
-
// Append table-shema into code
|
223 |
-
$return.= $tableshema[1].";" . "\n\n" ;
|
224 |
-
|
225 |
-
// Cycle through each table-row
|
226 |
-
while($rowdata = $result->fetch_row()) {
|
227 |
-
|
228 |
-
// Prepare code that will insert data into table
|
229 |
-
$return .= 'INSERT INTO `'.$table .'` VALUES ( ' ;
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
$return
|
238 |
-
$
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
$
|
262 |
-
$handle
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
}
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
$
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
'
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
'
|
370 |
-
'
|
371 |
-
'
|
372 |
-
'
|
373 |
-
'
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WP Backitup Functions
|
4 |
+
*
|
5 |
+
* @package WP Backitup
|
6 |
+
*
|
7 |
+
* @author jcpeden
|
8 |
+
* @version 1.4.2
|
9 |
+
* @since 1.0.2
|
10 |
+
*/
|
11 |
+
|
12 |
+
// localize the plugin
|
13 |
+
function lang_setup() {
|
14 |
+
global $WPBackitup;
|
15 |
+
load_plugin_textdomain($WPBackitup->namespace, false, dirname(plugin_basename(__FILE__)) . '/lang/');
|
16 |
+
}
|
17 |
+
add_action('after_setup_theme', 'lang_setup');
|
18 |
+
|
19 |
+
// include recurseZip class
|
20 |
+
if( !class_exists( 'recurseZip' ) ) {
|
21 |
+
include_once 'includes/recurse_zip.php';
|
22 |
+
}
|
23 |
+
|
24 |
+
// retrieve our license key from the DB
|
25 |
+
$license_key = trim( $this->get_option( 'license_key' ) );
|
26 |
+
|
27 |
+
//define dbSize function
|
28 |
+
function dbSize($dbname) {
|
29 |
+
mysqli_select_db($dbname);
|
30 |
+
$result = mysqli_query("SHOW TABLE STATUS");
|
31 |
+
$dbsize = 0;
|
32 |
+
while($row = mysqli_fetch_array($result)) {
|
33 |
+
$dbsize += $row["Data_length"] + $row["Index_length"];
|
34 |
+
}
|
35 |
+
return $dbsize;
|
36 |
+
}
|
37 |
+
|
38 |
+
//define formatFileSize function
|
39 |
+
function formatFileSize($bytes)
|
40 |
+
{
|
41 |
+
if ($bytes >= 1073741824)
|
42 |
+
{
|
43 |
+
$bytes = number_format($bytes / 1073741824, 2) . ' GB';
|
44 |
+
}
|
45 |
+
elseif ($bytes >= 1048576)
|
46 |
+
{
|
47 |
+
$bytes = number_format($bytes / 1048576, 2) . ' MB';
|
48 |
+
}
|
49 |
+
elseif ($bytes >= 1024)
|
50 |
+
{
|
51 |
+
$bytes = number_format($bytes / 1024, 2) . ' KB';
|
52 |
+
}
|
53 |
+
elseif ($bytes > 1)
|
54 |
+
{
|
55 |
+
$bytes = $bytes . ' bytes';
|
56 |
+
}
|
57 |
+
elseif ($bytes == 1)
|
58 |
+
{
|
59 |
+
$bytes = $bytes . ' byte';
|
60 |
+
}
|
61 |
+
else
|
62 |
+
{
|
63 |
+
$bytes = '0 bytes';
|
64 |
+
}
|
65 |
+
|
66 |
+
return $bytes;
|
67 |
+
}
|
68 |
+
|
69 |
+
//define dirSize function
|
70 |
+
function dirSize($directory) {
|
71 |
+
$size = 0;
|
72 |
+
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)) as $file){
|
73 |
+
$size+=$file->getSize();
|
74 |
+
}
|
75 |
+
return $size;
|
76 |
+
}
|
77 |
+
|
78 |
+
//load backup function
|
79 |
+
function backup() {
|
80 |
+
include_once 'includes/backup.php';
|
81 |
+
}
|
82 |
+
add_action('wp_ajax_backup', 'backup');
|
83 |
+
|
84 |
+
//load restore_path function
|
85 |
+
function restore_path() {
|
86 |
+
include_once 'includes/restore_from_path.php';
|
87 |
+
}
|
88 |
+
add_action('wp_ajax_restore_path', 'restore_path');
|
89 |
+
|
90 |
+
//load download function
|
91 |
+
function download() {
|
92 |
+
if(glob(WPBACKITUP_DIRNAME . "/backups/*.zip")) {
|
93 |
+
foreach (glob(WPBACKITUP_DIRNAME . "/backups/*.zip") as $file) {
|
94 |
+
$filename = basename($file);
|
95 |
+
echo 'Download most recent export file: <a href="' .WPBACKITUP_URLPATH. '/backups/' .$filename .'">' .$filename .'</a>';
|
96 |
+
}
|
97 |
+
} else {
|
98 |
+
echo 'No export file available for download. Please create one.';
|
99 |
+
}
|
100 |
+
die();
|
101 |
+
}
|
102 |
+
add_action('wp_ajax_download', 'download');
|
103 |
+
|
104 |
+
//load logreader function
|
105 |
+
function logreader() {
|
106 |
+
$log = WPBACKITUP_DIRNAME .'/logs/status.log';
|
107 |
+
if(file_exists($log) ) {
|
108 |
+
readfile($log);
|
109 |
+
}
|
110 |
+
die();
|
111 |
+
}
|
112 |
+
add_action('wp_ajax_logreader', 'logreader');
|
113 |
+
|
114 |
+
//define create_dir function
|
115 |
+
if(!function_exists('create_dir')) {
|
116 |
+
function create_dir($dir) {
|
117 |
+
if( !is_dir($dir) ) {
|
118 |
+
@mkdir($dir, 0755);
|
119 |
+
}
|
120 |
+
return true;
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
//Define recusive_copy function
|
125 |
+
if(!function_exists('recursive_copy')) {
|
126 |
+
function recursive_copy($dir, $target_path, $ignore = array( 'cgi-bin','..','._' ) ) {
|
127 |
+
if( is_dir($dir) ) { //If the directory exists
|
128 |
+
if ($dh = opendir($dir) ) {
|
129 |
+
while(($file = readdir($dh)) !== false) { //While there are files in the directory
|
130 |
+
if ( !in_array($file, $ignore) && substr($file, 0, 1) != '.') { //Check the file is not in the ignore array
|
131 |
+
if (!is_dir( $dir.$file ) ) {
|
132 |
+
//Copy files to destination directory
|
133 |
+
$fsrc = fopen($dir .$file,'r');
|
134 |
+
$fdest = fopen($target_path .$file,'w+');
|
135 |
+
$len = stream_copy_to_stream($fsrc,$fdest);
|
136 |
+
fclose($fsrc);
|
137 |
+
fclose($fdest);
|
138 |
+
} else { //If $file is a directory
|
139 |
+
$destdir = $target_path .$file; //Modify the destination dir
|
140 |
+
if(!is_dir($destdir)) { //Create the destdir if it doesn't exist
|
141 |
+
@mkdir($destdir, 0755);
|
142 |
+
}
|
143 |
+
recursive_copy($dir .$file .'/', $target_path .$file .'/', $ignore);
|
144 |
+
}
|
145 |
+
}
|
146 |
+
}
|
147 |
+
closedir($dh);
|
148 |
+
}
|
149 |
+
}
|
150 |
+
return true;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
//Define DB backup function
|
155 |
+
if(!function_exists('db_backup')) {
|
156 |
+
function db_backup($user, $pass, $host, $db_name, $path) {
|
157 |
+
|
158 |
+
//set fileName
|
159 |
+
$fileName = 'db-backup.sql' ;
|
160 |
+
|
161 |
+
// Check if directory is already created and has the proper permissions
|
162 |
+
if (!file_exists($path)) {
|
163 |
+
if(!mkdir($path , 0755) ){
|
164 |
+
return false;
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
if (!is_writable($path)) {
|
169 |
+
if (!chmod($path , 0755) ) {
|
170 |
+
return false;
|
171 |
+
}
|
172 |
+
}
|
173 |
+
|
174 |
+
$mysqli = new mysqli($host , $user , $pass , $db_name) ;
|
175 |
+
if (mysqli_connect_errno()) {
|
176 |
+
return false;
|
177 |
+
}
|
178 |
+
|
179 |
+
// Introduction information
|
180 |
+
$return = '';
|
181 |
+
$return .= "--\n";
|
182 |
+
$return .= "-- WP Backitup Database Backup \n";
|
183 |
+
$return .= "--\n";
|
184 |
+
$return .= '-- Created: ' . date("Y/m/d") . ' on ' . date("h:i") . "\n\n\n";
|
185 |
+
$return = "--\n";
|
186 |
+
$return .= "-- Database : " . $db_name . "\n";
|
187 |
+
$return .= "--\n";
|
188 |
+
$return .= "-- --------------------------------------------------\n";
|
189 |
+
$return .= "-- ---------------------------------------------------\n";
|
190 |
+
$return .= 'SET AUTOCOMMIT = 0 ;' ."\n" ;
|
191 |
+
$return .= 'SET FOREIGN_KEY_CHECKS=0 ;' ."\n" ;
|
192 |
+
$tables = array() ;
|
193 |
+
|
194 |
+
// Exploring what tables this database has
|
195 |
+
$result = $mysqli->query('SHOW TABLES' ) ;
|
196 |
+
|
197 |
+
// Cycle through "$result" and put content into an array
|
198 |
+
while ($row = $result->fetch_row()) {
|
199 |
+
$tables[] = $row[0] ;
|
200 |
+
}
|
201 |
+
|
202 |
+
// Cycle through each table
|
203 |
+
foreach($tables as $table) {
|
204 |
+
// Get content of each table
|
205 |
+
$result = $mysqli->query('SELECT * FROM '. $table) ;
|
206 |
+
|
207 |
+
// Get number of fields (columns) of each table
|
208 |
+
$num_fields = $mysqli->field_count ;
|
209 |
+
|
210 |
+
// Add table information
|
211 |
+
$return .= "--\n" ;
|
212 |
+
$return .= '-- Tabel structure for table `' . $table . '`' . "\n" ;
|
213 |
+
$return .= "--\n" ;
|
214 |
+
$return.= 'DROP TABLE IF EXISTS `'.$table.'`;' . "\n" ;
|
215 |
+
|
216 |
+
// Get the table-shema
|
217 |
+
$shema = $mysqli->query('SHOW CREATE TABLE '.$table) ;
|
218 |
+
|
219 |
+
// Extract table shema
|
220 |
+
$tableshema = $shema->fetch_row() ;
|
221 |
+
|
222 |
+
// Append table-shema into code
|
223 |
+
$return.= $tableshema[1].";" . "\n\n" ;
|
224 |
+
|
225 |
+
// Cycle through each table-row
|
226 |
+
while($rowdata = $result->fetch_row()) {
|
227 |
+
|
228 |
+
// Prepare code that will insert data into table
|
229 |
+
/* $return .= 'INSERT INTO `'.$table .'` VALUES ( ' ;
|
230 |
+
// Extract data of each row
|
231 |
+
for($i=0; $i<$num_fields; $i++) {
|
232 |
+
$return .= '"'.$rowdata[$i] . "\"," ;
|
233 |
+
}
|
234 |
+
// Let's remove the last comma
|
235 |
+
$return = substr("$return", 0, -1) ;
|
236 |
+
$return .= ");" ."\n" ;*/
|
237 |
+
$return.= 'INSERT INTO '.$table.' VALUES(';
|
238 |
+
for($j=0; $j<$num_fields; $j++){
|
239 |
+
$rowdata[$j] = addslashes($rowdata[$j]);
|
240 |
+
$rowdata[$j] = ereg_replace("\n","\\n",$rowdata[$j]);
|
241 |
+
if (isset($rowdata[$j])) {
|
242 |
+
$return.= '"'.$rowdata[$j].'"' ;
|
243 |
+
} else {
|
244 |
+
$return.= '""';
|
245 |
+
}
|
246 |
+
if ($j<($num_fields-1)) { $return.= ','; }
|
247 |
+
}
|
248 |
+
$return.= ");\n";
|
249 |
+
}
|
250 |
+
$return .= "\n\n" ;
|
251 |
+
}
|
252 |
+
|
253 |
+
// Close the connection
|
254 |
+
$mysqli->close() ;
|
255 |
+
$return .= 'SET FOREIGN_KEY_CHECKS = 1 ; ' . "\n" ;
|
256 |
+
$return .= 'COMMIT ; ' . "\n" ;
|
257 |
+
$return .= 'SET AUTOCOMMIT = 1 ; ' . "\n" ;
|
258 |
+
|
259 |
+
//save file
|
260 |
+
$handle = fopen($path . $fileName,'w+');
|
261 |
+
fwrite($handle,$return);
|
262 |
+
fclose($handle);
|
263 |
+
return true;
|
264 |
+
}
|
265 |
+
}
|
266 |
+
|
267 |
+
//Define the create_siteinfo function
|
268 |
+
if(!function_exists('create_siteinfo')) {
|
269 |
+
function create_siteinfo($path, $table_prefix) {
|
270 |
+
$siteinfo = $path ."backupsiteinfo.txt";
|
271 |
+
$handle = fopen($siteinfo, 'w+');
|
272 |
+
$entry = site_url( '/' ) ."\n$table_prefix";
|
273 |
+
fwrite($handle, $entry);
|
274 |
+
fclose($handle);
|
275 |
+
return true;
|
276 |
+
}
|
277 |
+
}
|
278 |
+
|
279 |
+
//Define recursive_delete function
|
280 |
+
if(!function_exists('recursive_delete')){
|
281 |
+
function recursive_delete($dir, $ignore = array('cgi-bin','.','..','._') ){
|
282 |
+
if( is_dir($dir) ){
|
283 |
+
if($dh = opendir($dir)) {
|
284 |
+
while( ($file = readdir($dh)) !== false ) {
|
285 |
+
if (!in_array($file, $ignore) && substr($file, 0, 1) != '.') { //Check the file is not in the ignore array
|
286 |
+
if(!is_dir($dir .'/'. $file)) {
|
287 |
+
unlink($dir .'/'. $file);
|
288 |
+
} else {
|
289 |
+
recursive_delete($dir.'/'. $file, $ignore);
|
290 |
+
}
|
291 |
+
}
|
292 |
+
}
|
293 |
+
}
|
294 |
+
@rmdir($dir);
|
295 |
+
closedir($dh);
|
296 |
+
}
|
297 |
+
return true;
|
298 |
+
}
|
299 |
+
}
|
300 |
+
|
301 |
+
//Define zip function
|
302 |
+
function zip($source, $destination, $ignore) {
|
303 |
+
if (is_string($source)) $source_arr = array($source); // convert it to array
|
304 |
+
if (!extension_loaded('zip')) {
|
305 |
+
return false;
|
306 |
+
}
|
307 |
+
$zip = new ZipArchive();
|
308 |
+
if (!$zip->open($destination, ZIPARCHIVE::CREATE)) {
|
309 |
+
return false;
|
310 |
+
}
|
311 |
+
foreach ($source_arr as $source) {
|
312 |
+
if (!file_exists($source)) continue;
|
313 |
+
$source = str_replace('\\', '/', realpath($source));
|
314 |
+
if (is_dir($source) === true) {
|
315 |
+
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
|
316 |
+
foreach ($files as $file) {
|
317 |
+
if (!preg_match($ignore, $file)) {
|
318 |
+
$file = str_replace('\\', '/', realpath($file));
|
319 |
+
if (is_dir($file) === true) {
|
320 |
+
$zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
|
321 |
+
} else if (is_file($file) === true) {
|
322 |
+
$zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
|
323 |
+
}
|
324 |
+
}
|
325 |
+
}
|
326 |
+
} else if (is_file($source) === true) {
|
327 |
+
$zip->addFromString(basename($source), file_get_contents($source));
|
328 |
+
}
|
329 |
+
}
|
330 |
+
return $zip->close();
|
331 |
+
}
|
332 |
+
|
333 |
+
//load presstrends
|
334 |
+
function load_presstrends() {
|
335 |
+
global $WPBackitup;
|
336 |
+
if($WPBackitup->get_option( 'presstrends' ) == 'enabled') {
|
337 |
+
// PressTrends Account API Key
|
338 |
+
$api_key = 'rwiyhqfp7eioeh62h6t3ulvcghn2q8cr7j5x';
|
339 |
+
$auth = 'lpa0nvlhyzbyikkwizk4navhtoaqujrbw';
|
340 |
+
|
341 |
+
// Start of Metrics
|
342 |
+
global $wpdb;
|
343 |
+
$data = get_transient( 'presstrends_cache_data' );
|
344 |
+
if ( !$data || $data == '' ) {
|
345 |
+
$api_base = 'http://api.presstrends.io/index.php/api/pluginsites/update/auth/';
|
346 |
+
$url = $api_base . $auth . '/api/' . $api_key . '/';
|
347 |
+
|
348 |
+
$count_posts = wp_count_posts();
|
349 |
+
$count_pages = wp_count_posts( 'page' );
|
350 |
+
$comments_count = wp_count_comments();
|
351 |
+
|
352 |
+
// wp_get_theme was introduced in 3.4, for compatibility with older versions, let's do a workaround for now.
|
353 |
+
if ( function_exists( 'wp_get_theme' ) ) {
|
354 |
+
$theme_data = wp_get_theme();
|
355 |
+
$theme_name = urlencode( $theme_data->Name );
|
356 |
+
} else {
|
357 |
+
$theme_data = get_theme_data( get_stylesheet_directory() . '/style.css' );
|
358 |
+
$theme_name = $theme_data['Name'];
|
359 |
+
}
|
360 |
+
|
361 |
+
$plugin_name = '&';
|
362 |
+
foreach ( get_plugins() as $plugin_info ) {
|
363 |
+
$plugin_name .= $plugin_info['Name'] . '&';
|
364 |
+
}
|
365 |
+
// CHANGE __FILE__ PATH IF LOCATED OUTSIDE MAIN PLUGIN FILE
|
366 |
+
$plugin_data = get_plugin_data( __FILE__ );
|
367 |
+
$posts_with_comments = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type='post' AND comment_count > 0" );
|
368 |
+
$data = array(
|
369 |
+
'url' => stripslashes( str_replace( array( 'http://', '/', ':' ), '', site_url() ) ),
|
370 |
+
'posts' => $count_posts->publish,
|
371 |
+
'pages' => $count_pages->publish,
|
372 |
+
'comments' => $comments_count->total_comments,
|
373 |
+
'approved' => $comments_count->approved,
|
374 |
+
'spam' => $comments_count->spam,
|
375 |
+
'pingbacks' => $wpdb->get_var( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_type = 'pingback'" ),
|
376 |
+
'post_conversion' => ( $count_posts->publish > 0 && $posts_with_comments > 0 ) ? number_format( ( $posts_with_comments / $count_posts->publish ) * 100, 0, '.', '' ) : 0,
|
377 |
+
'theme_version' => $plugin_data['Version'],
|
378 |
+
'theme_name' => $theme_name,
|
379 |
+
'site_name' => str_replace( ' ', '', get_bloginfo( 'name' ) ),
|
380 |
+
'plugins' => count( get_option( 'active_plugins' ) ),
|
381 |
+
'plugin' => urlencode( $plugin_name ),
|
382 |
+
'wpversion' => get_bloginfo( 'version' ),
|
383 |
+
);
|
384 |
+
|
385 |
+
foreach ( $data as $k => $v ) {
|
386 |
+
$url .= $k . '/' . $v . '/';
|
387 |
+
}
|
388 |
+
wp_remote_get( $url );
|
389 |
+
set_transient( 'presstrends_cache_data', $data, 60 * 60 * 24 );
|
390 |
+
}
|
391 |
+
}
|
392 |
+
}
|
393 |
+
// PressTrends WordPress Action
|
394 |
+
add_action('admin_init', 'load_presstrends');
|
lib/includes/recurse_zip.php
CHANGED
@@ -1 +1 @@
|
|
1 |
-
<?php
|
2 |
* WP Backitup Recurse Zip Function
|
3 |
*
|
4 |
* @package WP Backitup
|
5 |
*
|
6 |
* @author jcpeden
|
7 |
* @version 1.4.0
|
8 |
* @since 1.0.1
|
9 |
*/
|
|
|
10 |
* WP Backitup Recurse Zip Function
|
11 |
*
|
12 |
* @package WP Backitup
|
13 |
*
|
14 |
* @author jcpeden
|
15 |
* @version 1.4.0
|
16 |
* @since 1.0.1
|
17 |
*/
|
|
|
1 |
* WP Backitup Recurse Zip Function
|
2 |
*
|
3 |
* @package WP Backitup
|
4 |
*
|
5 |
* @author jcpeden
|
6 |
* @version 1.4.0
|
7 |
* @since 1.0.1
|
8 |
*/
|
9 |
+
<?php
|
10 |
* WP Backitup Recurse Zip Function
|
11 |
*
|
12 |
* @package WP Backitup
|
13 |
*
|
14 |
* @author jcpeden
|
15 |
* @version 1.4.0
|
16 |
* @since 1.0.1
|
17 |
*/
|
logs/status.log
CHANGED
@@ -1 +1 @@
|
|
1 |
-
<div class="
|
1 |
+
<div class="upload">1</div><div class="unzipping">1</div><div class="validation">1</div><div class="restore_point">1</div><div class="database">1</div><div class="wpcontent">1</div><div class="cleanup">1</div><div class="finalinfo">1</div>
|
readme.txt
CHANGED
@@ -1,204 +1,210 @@
|
|
1 |
-
=== WP Backitup ===
|
2 |
-
Contributors: jcpeden
|
3 |
-
Donate link: http://www.wpbackitup.com
|
4 |
-
Tags: backup wordpress, database backup, backup database, download database, backup and restore, restoring wordpress, restore wordpress, restore wordpress backup,
|
5 |
-
Requires at least: 3.4.2
|
6 |
-
Tested up to: 3.6.
|
7 |
-
Stable tag: 1.
|
8 |
-
License: GPLv2 or later
|
9 |
-
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
-
|
11 |
-
Create a backup zip of your content and settings with a single click that can be used to restore your site quickly and easily.
|
12 |
-
|
13 |
-
== Description ==
|
14 |
-
|
15 |
-
= The Simple Way to Backup Your Site =
|
16 |
-
WP Backitup creates a backup zip of your site's content and configuration in just a single click,
|
17 |
-
right from your Wordpress dashboard. There is no need to FTP into your site and no knowledge of MySQL or PHPMyAdmin is required.
|
18 |
-
|
19 |
-
You can use your backup zip to restore your site or to clone a site's content and settings when setting up a new one.
|
20 |
-
|
21 |
-
= Automatically Restore Your Backup Zips =
|
22 |
-
Tired of messing around in PHPMyAdmin and with FTP trying to restore you backups? <a href="http://www.wpbackitup.com/wp-backitup-pro/" title="WP Backitup">WP Backitup Pro</a> offers all the features of <a href="http://wordpress.org/extend/plugins/wp-backitup/" title="WP Backitup Lite">WP Backitup</a> but allows you to import your backup zips in seconds, right from the Wordpress Dashboard.
|
23 |
-
|
24 |
-
= Easy To Install and Use =
|
25 |
-
Simply install the plugin directly to Wordpress and browse to the new menu 'WP Backitup'. From there, just follow the on-screen instructions and watch as WP Backitup creates a backup of you site's plugins, themes and uploads as well as you content and settings (including all custom widgets and settings for any additional plugins).
|
26 |
-
|
27 |
-
= More questions? =
|
28 |
-
Why not head over to the <a href="http://www.wpbackitup.com/" title="WP Backitup">WP Backitup site</a>?
|
29 |
-
|
30 |
-
== Installation ==
|
31 |
-
|
32 |
-
Installation of the plugin is straightforward:
|
33 |
-
|
34 |
-
1. Upload the plugin to your plugins directory via FTP or through the Wordpress dashboard.
|
35 |
-
1. Activate the plugin.
|
36 |
-
1. A new menu called 'WP Backitup' will be added to your toolbar.
|
37 |
-
1. Click 'WP Backitup' to access the backup/restore interface.
|
38 |
-
|
39 |
-
== Frequently Asked Questions ==
|
40 |
-
|
41 |
-
= Can I manually restore my backup zips? =
|
42 |
-
Sure! The backup zips generated by WP Backitup contain a database dump and a copy of your wp-content directory. Simply upload your files and import your database.
|
43 |
-
|
44 |
-
= Is there an easier way to restore my backup zips? =
|
45 |
-
Yes, purchase and download <a href="http://www.wpbackitup.com/wp-backitup-pro/" title="WP Backitup">WP Backitup</a>. Once installed, you'll be able to restore you backup zips without FTP or MySQL.
|
46 |
-
|
47 |
-
= Will the plugin work on shared hosting/sub domains/webhost xxx? =
|
48 |
-
Yes.
|
49 |
-
|
50 |
-
= Will WP Backitup work on Windows hosting? =
|
51 |
-
Yes.
|
52 |
-
|
53 |
-
= Are you going to be makinggress bars both for backing up and restoring with this plugin? =
|
54 |
-
It is likely this will feature in a new version of WP Backitup.
|
55 |
-
|
56 |
-
= Can this plugin back to Amazon S3? =
|
57 |
-
This will feature in an upcoming version of WP Backitup.
|
58 |
-
|
59 |
-
= Is there an auto back up schedule feature? =
|
60 |
-
It is likely this will feature in a new version of WP Backitup.
|
61 |
-
|
62 |
-
= Will the plugin work with Wordpres version x.x? =
|
63 |
-
The plugin works on the latest release of WordPress and is updated to function with all new releases.
|
64 |
-
|
65 |
-
= Can this backup one version of WordPress to a different version? =
|
66 |
-
No. It is absolutely critical that your WordPress versions are exactly the same.
|
67 |
-
|
68 |
-
= Will WP Backitup work on WordPress Multisite? =
|
69 |
-
WP Backitup cannot yet backup/restore entire networks but it is compatible with WPMS sites.
|
70 |
-
|
71 |
-
= Does the plugin copy the database details as well? =
|
72 |
-
Yes, a database dump is created with each backup.
|
73 |
-
|
74 |
-
= Can I make a basic WordPress site, with all my desired plugins and settings, make a few pages, setup permalinks, remove all the default junk and load in a basic themplate? =
|
75 |
-
Yes. WP Backitup can be used to create a good starting point for any and all sites you work on.
|
76 |
-
|
77 |
-
= Does WP Backitup need to be installed? =
|
78 |
-
Yes. You must install the WP Backitup plugin on the site you wish to backup and the site you wish to restore to. Its just a simple plugin.
|
79 |
-
|
80 |
-
= Does WP Backitup backup plugins settings or just the plugins themselves? =
|
81 |
-
WP Backitup creates a database dump and a backup of all your themes, plugins and uploads.
|
82 |
-
|
83 |
-
= Do you have any ideas about how large a blog is too big for WP Backitup to handle? =
|
84 |
-
I`ve tested up to 5 themes, 20 plugins and 100 posts/pages without any issues.
|
85 |
-
|
86 |
-
= Do you do regularly update thisduct to match with WP version updates? =
|
87 |
-
Yes.
|
88 |
-
|
89 |
-
== Screenshots ==
|
90 |
-
1. Once activated, the plugin loads a new menu into your toolbar.
|
91 |
-
2. Simply click 'Backup' to generate a backup of your site. The plugin will update you on itsgress.
|
92 |
-
3. When the backup has been created, click the download link to access a zipped backup of your site.
|
93 |
-
|
94 |
-
== Changelog ==
|
95 |
-
|
96 |
-
= 1.
|
97 |
-
Changed DB
|
98 |
-
|
99 |
-
= 1.4.
|
100 |
-
|
101 |
-
|
102 |
-
= 1.4.
|
103 |
-
|
104 |
-
|
105 |
-
= 1.
|
106 |
-
|
107 |
-
|
108 |
-
= 1.
|
109 |
-
|
110 |
-
|
111 |
-
= 1.2.
|
112 |
-
|
113 |
-
|
114 |
-
= 1.2.
|
115 |
-
|
116 |
-
|
117 |
-
= 1.
|
118 |
-
|
119 |
-
|
120 |
-
= 1.0
|
121 |
-
|
122 |
-
|
123 |
-
= 1.0.
|
124 |
-
|
125 |
-
|
126 |
-
= 1.0.
|
127 |
-
|
128 |
-
|
129 |
-
= 1.0.
|
130 |
-
|
131 |
-
|
132 |
-
= 1.0.
|
133 |
-
Fixed critical issues the auto-upgradecess.
|
134 |
-
|
135 |
-
= 1.0.
|
136 |
-
Fixed issues
|
137 |
-
|
138 |
-
= 1.0.
|
139 |
-
Fixed
|
140 |
-
|
141 |
-
= 1.0.
|
142 |
-
|
143 |
-
|
144 |
-
= 1.0.
|
145 |
-
|
146 |
-
|
147 |
-
= 1.0.
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
= 1.
|
156 |
-
|
157 |
-
|
158 |
-
= 1.4.
|
159 |
-
Recommended upgrade:
|
160 |
-
|
161 |
-
= 1.
|
162 |
-
Recommended upgrade:
|
163 |
-
|
164 |
-
= 1.
|
165 |
-
|
166 |
-
|
167 |
-
= 1.
|
168 |
-
Recommended upgrade:
|
169 |
-
|
170 |
-
= 1.2.
|
171 |
-
|
172 |
-
|
173 |
-
= 1.1
|
174 |
-
|
175 |
-
|
176 |
-
= 1.0
|
177 |
-
Recommended upgrade:
|
178 |
-
|
179 |
-
= 1.0
|
180 |
-
|
181 |
-
|
182 |
-
= 1.0.
|
183 |
-
|
184 |
-
|
185 |
-
= 1.0.
|
186 |
-
|
187 |
-
|
188 |
-
= 1.0.
|
189 |
-
Critical upgrade: Fixed major bugs with auto-upgradecess.
|
190 |
-
|
191 |
-
= 1.0.
|
192 |
-
Critical upgrade: Fixed major bugs with
|
193 |
-
|
194 |
-
= 1.0.
|
195 |
-
Critical upgrade:
|
196 |
-
|
197 |
-
= 1.0.
|
198 |
-
|
199 |
-
|
200 |
-
= 1.0.
|
201 |
-
|
202 |
-
|
203 |
-
= 1.0.
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
Initial version of the plugin.
|
1 |
+
=== WP Backitup ===
|
2 |
+
Contributors: jcpeden, tarunk
|
3 |
+
Donate link: http://www.wpbackitup.com
|
4 |
+
Tags: backup wordpress, database backup, backup database, download database, backup and restore, restoring wordpress, restore wordpress, restore wordpress backup,
|
5 |
+
Requires at least: 3.4.2
|
6 |
+
Tested up to: 3.6.1
|
7 |
+
Stable tag: 1.5.0
|
8 |
+
License: GPLv2 or later
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
+
|
11 |
+
Create a backup zip of your content and settings with a single click that can be used to restore your site quickly and easily.
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
|
15 |
+
= The Simple Way to Backup Your Site =
|
16 |
+
WP Backitup creates a backup zip of your site's content and configuration in just a single click,
|
17 |
+
right from your Wordpress dashboard. There is no need to FTP into your site and no knowledge of MySQL or PHPMyAdmin is required.
|
18 |
+
|
19 |
+
You can use your backup zip to restore your site or to clone a site's content and settings when setting up a new one.
|
20 |
+
|
21 |
+
= Automatically Restore Your Backup Zips =
|
22 |
+
Tired of messing around in PHPMyAdmin and with FTP trying to restore you backups? <a href="http://www.wpbackitup.com/wp-backitup-pro/" title="WP Backitup">WP Backitup Pro</a> offers all the features of <a href="http://wordpress.org/extend/plugins/wp-backitup/" title="WP Backitup Lite">WP Backitup</a> but allows you to import your backup zips in seconds, right from the Wordpress Dashboard.
|
23 |
+
|
24 |
+
= Easy To Install and Use =
|
25 |
+
Simply install the plugin directly to Wordpress and browse to the new menu 'WP Backitup'. From there, just follow the on-screen instructions and watch as WP Backitup creates a backup of you site's plugins, themes and uploads as well as you content and settings (including all custom widgets and settings for any additional plugins).
|
26 |
+
|
27 |
+
= More questions? =
|
28 |
+
Why not head over to the <a href="http://www.wpbackitup.com/" title="WP Backitup">WP Backitup site</a>?
|
29 |
+
|
30 |
+
== Installation ==
|
31 |
+
|
32 |
+
Installation of the plugin is straightforward:
|
33 |
+
|
34 |
+
1. Upload the plugin to your plugins directory via FTP or through the Wordpress dashboard.
|
35 |
+
1. Activate the plugin.
|
36 |
+
1. A new menu called 'WP Backitup' will be added to your toolbar.
|
37 |
+
1. Click 'WP Backitup' to access the backup/restore interface.
|
38 |
+
|
39 |
+
== Frequently Asked Questions ==
|
40 |
+
|
41 |
+
= Can I manually restore my backup zips? =
|
42 |
+
Sure! The backup zips generated by WP Backitup contain a database dump and a copy of your wp-content directory. Simply upload your files and import your database.
|
43 |
+
|
44 |
+
= Is there an easier way to restore my backup zips? =
|
45 |
+
Yes, purchase and download <a href="http://www.wpbackitup.com/wp-backitup-pro/" title="WP Backitup">WP Backitup</a>. Once installed, you'll be able to restore you backup zips without FTP or MySQL.
|
46 |
+
|
47 |
+
= Will the plugin work on shared hosting/sub domains/webhost xxx? =
|
48 |
+
Yes.
|
49 |
+
|
50 |
+
= Will WP Backitup work on Windows hosting? =
|
51 |
+
Yes.
|
52 |
+
|
53 |
+
= Are you going to be makinggress bars both for backing up and restoring with this plugin? =
|
54 |
+
It is likely this will feature in a new version of WP Backitup.
|
55 |
+
|
56 |
+
= Can this plugin back to Amazon S3? =
|
57 |
+
This will feature in an upcoming version of WP Backitup.
|
58 |
+
|
59 |
+
= Is there an auto back up schedule feature? =
|
60 |
+
It is likely this will feature in a new version of WP Backitup.
|
61 |
+
|
62 |
+
= Will the plugin work with Wordpres version x.x? =
|
63 |
+
The plugin works on the latest release of WordPress and is updated to function with all new releases.
|
64 |
+
|
65 |
+
= Can this backup one version of WordPress to a different version? =
|
66 |
+
No. It is absolutely critical that your WordPress versions are exactly the same.
|
67 |
+
|
68 |
+
= Will WP Backitup work on WordPress Multisite? =
|
69 |
+
WP Backitup cannot yet backup/restore entire networks but it is compatible with WPMS sites.
|
70 |
+
|
71 |
+
= Does the plugin copy the database details as well? =
|
72 |
+
Yes, a database dump is created with each backup.
|
73 |
+
|
74 |
+
= Can I make a basic WordPress site, with all my desired plugins and settings, make a few pages, setup permalinks, remove all the default junk and load in a basic themplate? =
|
75 |
+
Yes. WP Backitup can be used to create a good starting point for any and all sites you work on.
|
76 |
+
|
77 |
+
= Does WP Backitup need to be installed? =
|
78 |
+
Yes. You must install the WP Backitup plugin on the site you wish to backup and the site you wish to restore to. Its just a simple plugin.
|
79 |
+
|
80 |
+
= Does WP Backitup backup plugins settings or just the plugins themselves? =
|
81 |
+
WP Backitup creates a database dump and a backup of all your themes, plugins and uploads.
|
82 |
+
|
83 |
+
= Do you have any ideas about how large a blog is too big for WP Backitup to handle? =
|
84 |
+
I`ve tested up to 5 themes, 20 plugins and 100 posts/pages without any issues.
|
85 |
+
|
86 |
+
= Do you do regularly update thisduct to match with WP version updates? =
|
87 |
+
Yes.
|
88 |
+
|
89 |
+
== Screenshots ==
|
90 |
+
1. Once activated, the plugin loads a new menu into your toolbar.
|
91 |
+
2. Simply click 'Backup' to generate a backup of your site. The plugin will update you on itsgress.
|
92 |
+
3. When the backup has been created, click the download link to access a zipped backup of your site.
|
93 |
+
|
94 |
+
== Changelog ==
|
95 |
+
|
96 |
+
= 1.5.0 =
|
97 |
+
Changed DB Export and import method to work on all hosting.
|
98 |
+
|
99 |
+
= 1.4.2 =
|
100 |
+
Changed DB backup method to work on shared hosting.
|
101 |
+
|
102 |
+
= 1.4.1 =
|
103 |
+
Setup alert if DB is 0 bytes.
|
104 |
+
|
105 |
+
= 1.4.0 =
|
106 |
+
Fixed status reporting for backup/restore process and built-in localization.
|
107 |
+
|
108 |
+
= 1.3.0 =
|
109 |
+
Recommended upgrade: Amalgameted lite and pro versions of the plugin.
|
110 |
+
|
111 |
+
= 1.2.2 =
|
112 |
+
Major updates to improve plugin performance and stability.
|
113 |
+
|
114 |
+
= 1.2.1 =
|
115 |
+
Minor updates to plugin functionality.
|
116 |
+
|
117 |
+
= 1.2.0 =
|
118 |
+
Brought versioning inline with WP Backitup Lite. Fixed incorrecy message on restore interface. Fixed restorationcess.
|
119 |
+
|
120 |
+
= 1.1.0 =
|
121 |
+
Backup from mysqldump, restore from mysql command line, restore functionality from uploaded files, file size limit check according to server before uploads, setInterval termination after operation, status update as the task completes using XML.
|
122 |
+
|
123 |
+
= 1.0.9 =
|
124 |
+
Introduced mysqldump for backup and shell exec for copy/delete operations.
|
125 |
+
|
126 |
+
= 1.0.8 =
|
127 |
+
Added ability to restore from server.
|
128 |
+
|
129 |
+
= 1.0.7 =
|
130 |
+
Improved auto-update facility and plugin stability.
|
131 |
+
|
132 |
+
= 1.0.6 =
|
133 |
+
Fixed critical issues the auto-upgradecess.
|
134 |
+
|
135 |
+
= 1.0.5 =
|
136 |
+
Fixed critical issues the auto-upgradecess.
|
137 |
+
|
138 |
+
= 1.0.4 =
|
139 |
+
Fixed issues with the restorationcess.
|
140 |
+
|
141 |
+
= 1.0.3 =
|
142 |
+
Fixed the auto-update engine and license key activation system.
|
143 |
+
|
144 |
+
= 1.0.2 =
|
145 |
+
Minor bugs patched for auto-update engine.
|
146 |
+
|
147 |
+
= 1.0.1 =
|
148 |
+
WP Backitup integrated with licensing and auto-update engine.
|
149 |
+
|
150 |
+
= 1.0.0 =
|
151 |
+
Initial version of the plugin released.
|
152 |
+
|
153 |
+
== Upgrade Notice ==
|
154 |
+
|
155 |
+
= 1.5.0 =
|
156 |
+
Critical upgrade: Fixes to backup and import processes to work on a wider range of hosts.
|
157 |
+
|
158 |
+
= 1.4.2 =
|
159 |
+
Recommended upgrade: Many people on shared hosting will now be able to backup their database.
|
160 |
+
|
161 |
+
= 1.4.1 =
|
162 |
+
Recommended upgrade: Backitup will now alert and halt if your database is 0 bytes on backup.
|
163 |
+
|
164 |
+
= 1.4.0 =
|
165 |
+
Recommended upgrade: Fixed status reporting for backup/restore process and built-in localization.
|
166 |
+
|
167 |
+
= 1.3.0 =
|
168 |
+
Recommended upgrade: Amalgameted lite and pro versions of the plugin
|
169 |
+
|
170 |
+
= 1.2.2 =
|
171 |
+
Critical upgrade: Major overhaul of plugin structure
|
172 |
+
|
173 |
+
= 1.2.1 =
|
174 |
+
Recommended upgrade: Minor update to plugin structure.
|
175 |
+
|
176 |
+
= 1.2.0 =
|
177 |
+
Recommended upgrade: Minor update to plugin structure.
|
178 |
+
|
179 |
+
= 1.1.0 =
|
180 |
+
Critical upgrade: Improved plugin performance.
|
181 |
+
|
182 |
+
= 1.0.9 =
|
183 |
+
Recommended upgrade: Improved reliability and performance.
|
184 |
+
|
185 |
+
= 1.0.8 =
|
186 |
+
Recommended upgrade: Improved functionality
|
187 |
+
|
188 |
+
= 1.0.7 =
|
189 |
+
Critical upgrade: Fixed major bugs with auto-upgradecess.
|
190 |
+
|
191 |
+
= 1.0.6 =
|
192 |
+
Critical upgrade: Fixed major bugs with auto-upgradecess.
|
193 |
+
|
194 |
+
= 1.0.5 =
|
195 |
+
Critical upgrade: Fixed major bugs with auto-upgradecess.
|
196 |
+
|
197 |
+
= 1.0.4 =
|
198 |
+
Critical upgrade: Fixed major bugs with restorationcess.
|
199 |
+
|
200 |
+
= 1.0.3 =
|
201 |
+
Critical upgrade: Patched auto-update engine.
|
202 |
+
|
203 |
+
= 1.0.2 =
|
204 |
+
Non-critical upgrade: Patched auto-update engine.
|
205 |
+
|
206 |
+
= 1.0.1 =
|
207 |
+
Recommended upgrade: Added the licensing and auto-update engine.
|
208 |
+
|
209 |
+
= 1.0.0 =
|
210 |
Initial version of the plugin.
|