Giải pháp tôi đưa ra không dành riêng cho WordPress hoặc trang web thương mại điện tử. Bất cứ ai có cơ sở dữ liệu MySQL và có thể chạy PHP sẽ có thể hưởng lợi từ việc này. Có lẽ với một vài điều chỉnh cho câu trả lời của tôi, nhưng họ vẫn có thể đạt được kết quả cuối cùng.
Để lưu bản sao lưu cơ sở dữ liệu thương mại điện tử, tôi đã tạo thư mục trong thư mục gốc của trang web (/ temp - gọi nó là bất kỳ thứ gì bạn muốn). Sau đó, tôi đã thực sự tạo bản sao lưu cơ sở dữ liệu. Mở một trình soạn thảo văn bản và tạo một tệp có tên là backup_dropbox.php.
backup_dropbox.php
<?php
// location of your /temp directory relative to this file. In my case this file is in the same directory.
$tempDir = "";
// username for e-commerce MySQL DB
$user = "ecom_user";
// password for e-commerce MySQL DB
$password = "ecomDBpa$$word";
// e-commerce DB name to backup
$dbName = "ecom_db_name";
// e-commerce DB hostname
$dbHost = "localhost";
// e-commerce backup file prefix
$dbPrefix = "db_ecom";
// create backup sql file
$sqlFile = $tempDir.$dbPrefix.".sql";
$createBackup = "mysqldump -h ".$dbHost." -u ".$user." --password='".$password."' ".$dbName." > ".$sqlFile;
exec($createBackup);
//to backup multiple databases, copy all of the above code for each DB, rename the variables to something unique, and set their values to whatever is appropriate for the different databases.
?>
Bây giờ kịch bản này nên tạo một bản sao lưu cơ sở dữ liệu "ecom_db_name" bất cứ khi nào nó được chạy. Để có được nó chạy trên một khoảng thời gian dự kiến (tôi muốn nó chạy chỉ một vài phút trước khi sao lưu WordPress của tôi bắt đầu chạy lúc 7 giờ sáng). Bạn có thể sử dụng WP-Cron (nếu trang web của bạn nhận đủ lưu lượng truy cập để kích hoạt nó một cách đáng tin cậy để chạy vào đúng thời điểm) hoặc lên lịch công việc cron.
Tôi không có chuyên gia về công việc cron và các loại lệnh này, vì vậy có thể có cách tốt hơn. Tôi đã sử dụng điều này trên hai trang web khác nhau và chạy chúng theo hai cách khác nhau. Chơi xung quanh với những gì hoạt động tốt nhất cho bạn.
Cách thứ nhất nằm trên thư mục không được bảo vệ bằng mật khẩu, thứ hai là dành cho password protected directory. (Thay thế tên người dùng và mật khẩu bằng tên người dùng và mật khẩu của bạn, và rõ ràng là đặt example.com/temp/backup_dropbox.php vào bất cứ nơi nào tệp nằm trên máy chủ của bạn).
Cron Công việc chạy backup_dropbox.php 5 phút trước khi WP backup
55 6 * * * php /home/webhostusername/public_html/temp/backup_dropbox.php
HOẶC
55 6 * * * wget -q -O /dev/null http://username:[email protected]/temp/backup_dropbox.php
Bây giờ công việc định kỳ được thiết lập để chạy backup_dropbox.php và tạo bản sao lưu cơ sở dữ liệu của tôi mỗi ngày tại 06:55. Việc sao lưu WordPress vào Dropbox bắt đầu lúc 7 giờ sáng thường mất khoảng 5-6 phút, nhưng có thể lâu hơn một chút.
Tôi muốn xóa tệp sao lưu .sql của mình sau khi đã sao lưu thành công vào Dropbox để không ngồi đó mãi mãi cho ai đó bằng cách nào đó mở/tải xuống tệp cơ sở dữ liệu.
Bật lại trình chỉnh sửa văn bản và tạo một tệp khác có tên là clr_bkup.php.
clr_bkup.php
<?
$tmpDir = "";
//delete the database backup file
unlink($tmpDir.'db_ecom.sql');
// if you had multiple DB backup files to remove just copy the line above for each backup, and replace 'db_ecom.sql' with your DB backup file name
?>
Kể từ khi sao lưu WordPress mất một vài phút để kết thúc, tôi muốn chạy một công việc định kỳ để thực hiện clr_bkup.php lúc 10 qua 7, mà nên cung cấp cho nó đủ thời gian. Một lần nữa, công việc cron đầu tiên bên dưới là cho một thư mục không được bảo vệ và thư mục thứ hai cho một thư mục được bảo vệ bằng mật khẩu.
Cron Job để chạy clr_bkup.php 10 phút sau khi WP sao lưu bắt đầu
10 7 * * * php /home/webhostusername/public_html/temp/clr_bkup.php
HOẶC
10 7 * * * wget -q -O /dev/null http://username:[email protected]/temp/clr_bkup.php
Chuỗi các sự kiện
Để giúp quấn quanh đầu của bạn là gì đang diễn ra, đây là dòng thời gian:
6:55 am: Cron Job được lên lịch chạy backup_dropbox.php, tạo tệp sao lưu cơ sở dữ liệu của tôi.
7:00 sáng: WordPress Backup to Dropbox chạy và sao lưu tất cả các tệp đã thay đổi kể từ lần sao lưu cuối cùng, bao gồm bản sao lưu cơ sở dữ liệu cũ 5 phút mới được tạo của tôi.
7:10 am: Hiện tại, bản sao lưu Dropbox đã kết thúc, do đó Cron Job được lên lịch chạy clr_bkup.php, loại bỏ tệp sao lưu khỏi máy chủ.
Biến, Ghi chú và Misc. Thông tin
Timing
Việc đầu tiên mà treo tôi lên đã nhận được đúng thời điểm. Để đơn giản, tôi đã sử dụng thời gian trong ví dụ trên như thể mọi thứ đang diễn ra trong cùng một múi giờ. Trong thực tế, máy chủ lưu trữ web của tôi ở Bờ Tây Hoa Kỳ, trong khi múi giờ WordPress của tôi được đặt thành Bờ Đông Hoa Kỳ (chênh lệch 3 giờ). Công việc cron thực tế của tôi được thiết lập để chạy 3 giờ trước đó (thời gian máy chủ) so với những gì được hiển thị ở trên. Điều này sẽ khác nhau đối với tất cả mọi người. Đặt cược tốt nhất là biết sự khác biệt về thời gian ở phía trước.
Run Sao lưu với Time Kiểm tra
Trong thư mục đó không được mật khẩu bảo vệ, tôi muốn giữ kịch bản backup_dropbox.php chạy bất cứ lúc nào khác trong ngày hơn 06:55 (bằng cách truy cập trong trình duyệt lúc 10 giờ sáng). Tôi bao gồm một kiểm tra thời gian ở đầu của tập tin backup_dropbox.php, mà về cơ bản kiểm tra để xem nếu nó không phải là 6:55 sáng, sau đó không để cho nó thực thi phần còn lại của mã. Tôi sửa đổi backup_dropbox.php tới:
<?php
$now = time();
$hm = date('h:i', $now);
if ($hm != '06:55') {
echo "error message";
} else {
// DB BACKUP code from above goes here
}
?>
Tôi cho rằng bạn cũng có thể thêm video này vào file clr_bkup.php chỉ để cho nó xóa các tập tin sao lưu lúc 7:10 giờ sáng, nhưng tôi đã không thực sự thấy cần từ thời gian duy nhất clr_bkup.php sẽ làm bất cứ điều gì là giữa 6: 55-7: 10am dù sao đi nữa. Tùy thuộc vào bạn nếu bạn quyết định đi con đường đó.
Không có trên WordPress?
Có một số dịch vụ miễn phí và trả tiền mà sẽ sao lưu trang web của bạn, hoặc đến Dropbox hoặc một dịch vụ tương tự như Google Drive, Amazon S3, Box, vv, hoặc một số sẽ lưu trữ các tập tin trên máy chủ của họ có thu phí.
Backup Machine, Codeguard, Dropmysite, Backup Box hoặc Mover để đặt tên một vài.
Muốn sao lưu ngoại vi dự phòng?
Có rất nhiều dịch vụ cho phép bạn tạo tự động sao lưu dự phòng từ xa trên bất kỳ trang web lưu trữ đám mây nào được liệt kê ở trên.
Ví dụ: nếu bạn sao lưu trang web của mình vào Dropbox, bạn có thể sử dụng dịch vụ được gọi là If This Then That (IFTTT) để tự động thêm tệp được tải lên một Dropbox folder to Google Drive cụ thể. Bằng cách đó Dropbox sẽ gặp sự cố với máy chủ của họ, bạn cũng sẽ có bản sao lưu Google Drive. Hộp dự phòng được liệt kê ở trên cũng có thể làm một cái gì đó như thế này.
Hope this helps
Có thể có một cách tốt hơn để làm tất cả điều này. Tôi đã được một pinch và cần thiết để tìm một cái gì đó ra rằng hoạt động đáng tin cậy, mà điều này không. Nếu có bất kỳ cải tiến nào có thể được thực hiện, vui lòng chia sẻ trong các ý kiến.
Tốt Tutorial :) –