Hướng Dẫn Sao Lưu Website WordPress Vào Lưu Trữ Đối Tượng

Hướng Dẫn Sao Lưu Website WordPress Vào Lưu Trữ Đối Tượng

DataOnline Spaces có thể cung cấp giải pháp lưu trữ đối tượng cho dữ liệu của website WordPress. Dữ liệu này thường khá đa dạng, bao gồm các tài nguyên media và các tệp cơ sở dữ liệu, do đó rất phù hợp để lưu trữ dưới dạng đối tượng. Vì các giải pháp như Spaces có khả năng lưu trữ lượng lớn dữ liệu không cấu trúc, chúng có thể chứa được các tài nguyên tĩnh của trang web của bạn. Việc lưu trữ riêng các tài nguyên tĩnh có thể tối ưu hiệu suất trang web bằng cách giải phóng không gian và tài nguyên trên máy chủ của bạn. Nếu trang web của bạn có các tài nguyên động – những tài nguyên có tốc độ yêu cầu cao hoặc các tệp cơ sở dữ liệu cần thay đổi thường xuyên – bạn có thể cân nhắc kết hợp giải pháp lưu trữ khối với DataOnline Space để lưu trữ dữ liệu một cách tối ưu.
Để biết thêm về lưu trữ đối tượng và lưu trữ khối, hãy xem hướng dẫn của chúng tôi về Lưu trữ Đối tượng so với Dịch vụ Lưu trữ Khối.

Nếu bạn đang tìm kiếm một giải pháp lưu trữ website ổn định và hiệu quả, việc sử dụng VPS Việt Nam có thể là lựa chọn lý tưởng. Với VPS, bạn có toàn quyền kiểm soát máy chủ, giúp tối ưu hóa hiệu suất và bảo mật cho website WordPress của mình.

Trong hướng dẫn này, chúng ta sẽ sử dụng Spaces để sao lưu dữ liệu WordPress. Vì API của DataOnline Spaces tương thích với API AWS S3, chúng ta sẽ có thể sử dụng các plugin tương thích S3 để quản lý sao lưu của mình, cũng như S3cmd – một công cụ dòng lệnh để làm việc với S3 và các kho đối tượng tương thích S3.

Chúng ta sẽ đi qua một số phương pháp khác nhau để tạo các bản sao lưu:

  • Sử dụng một plugin WordPress.

  • Tạo các bản sao lưu thủ công bằng S3cmd.

  • Tự động hóa quá trình sao lưu bằng S3cmd kết hợp với một script được tạo ra cho mục đích đó.

Yêu Cầu Tiên Quyết

Hướng dẫn này giả định rằng bạn đã có một instance WordPress trên máy chủ và một DataOnline Space. Nếu chưa, bạn có thể thiết lập theo các bước sau:

● Một máy chủ Ubuntu, được thiết lập theo hướng dẫn “Thiết Lập Máy Chủ Ban Đầu với Ubuntu.”
● Một LAMP stack, được cài đặt trên máy chủ theo hướng dẫn “Cách Cài Đặt Bộ Phần Mềm LAMP (Linux, Apache, MySQL, PHP) Trên Ubuntu.”
● WordPress, được cài đặt trên máy chủ theo hướng dẫn “Cách Cài Đặt WordPress với LAMP trên Ubuntu.”

Với các yêu cầu tiên quyết này, chúng ta có thể bắt đầu sao lưu trang WordPress sang Spaces.

Thay Đổi Quyền Truy Cập WordPress

Trong suốt hướng dẫn này, chúng ta sẽ làm việc với thư mục wp-content/uploads trong dự án WordPress của mình, vì vậy quan trọng là thư mục này phải tồn tại và có quyền truy cập chính xác. Bạn có thể tạo thư mục này bằng lệnh mkdir với tham số -p để tạo thư mục nếu chưa tồn tại và tránh lỗi nếu thư mục đã có:

sudo mkdir -p /var/www/html/wp-content/uploads

Sau đó, bạn đặt quyền sở hữu cho thư mục này cho người dùng của bạn (ở đây sử dụng sammy, nhưng hãy thay thế bằng người dùng sudo không phải root của bạn) và nhóm sở hữu là www-data:

sudo chown -R sammy:www-data /var/www/html/wp-content/uploads

Tiếp theo, thiết lập quyền để máy chủ web có thể ghi vào thư mục này:

sudo chmod -R g+w /var/www/html/wp-content/uploads

Giờ đây, chúng ta có thể sử dụng các plugin để tạo bản sao lưu cho các tài nguyên trong thư mục wp-content/uploads và làm việc với các tài nguyên đó từ giao diện WordPress.

Sử Dụng Plugin Để Tạo Bản Sao Lưu

Có rất nhiều plugin tương thích S3 mà bạn có thể sử dụng để sao lưu trang WordPress sang Space của bạn. Một yếu tố cần xem xét khi đánh giá các plugin là liệu bạn có muốn sao lưu cả các tệp cơ sở dữ liệu hay không, vì một số plugin không hỗ trợ chức năng này. Một yếu tố khác là plugin có thể lấy các tài nguyên từ các plugin khác hay không – ví dụ, nếu bạn sử dụng một trình quản lý tài liệu, bạn có thể cần kiểm tra xem plugin sao lưu của bạn có bắt được các tệp và tài nguyên được tạo ra bởi trình quản lý tài liệu đó trong thư mục wp-content/uploads hay không.

Cài Đặt Plugin Với WP-CLI

Bạn có thể sử dụng WP-CLI để quản lý các plugin WordPress từ dòng lệnh. Trong phần này, chúng ta sẽ cài đặt WP-CLI và sử dụng nó để cài đặt các plugin hỗ trợ sao lưu dữ liệu WordPress sang Spaces.

Để cài đặt WP-CLI, hãy làm theo các bước được đề xuất của dự án. Chạy lệnh sau để tải binary vào thư mục /tmp:

cd /tmp
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Để biến file này có thể thực thi và sử dụng được từ dòng lệnh, gõ:

chmod +x /tmp/wp-cli.phar

Sau đó, đổi tên và di chuyển file này đến một vị trí có trong PATH:

sudo mv /tmp/wp-cli.phar /usr/local/bin/wp

Để kiểm tra cài đặt đã thành công, chạy:

wp --info

Lệnh này sẽ hiển thị thông tin về phiên bản WP-CLI mà bạn đang sử dụng và đường dẫn của nó. Giờ đây, bạn có thể sử dụng WP-CLI để cài đặt bất kỳ plugin nào bạn muốn và quản lý các tác vụ khác liên quan đến trang WordPress của bạn.

Cài Đặt Và Cấu Hình UpdraftPlus Backup

Nếu bạn quan tâm tới việc sao lưu các tệp cơ sở dữ liệu cùng với các tài nguyên media, bạn có thể sử dụng plugin cung cấp tùy chọn sao lưu cơ sở dữ liệu. UpdraftPlus Backup cung cấp phiên bản miễn phí tương thích S3, cho phép sao lưu cơ sở dữ liệu và media, cùng với lập lịch sao lưu.

Để cài đặt UpdraftPlus, điều hướng tới thư mục plugin của WordPress:

cd /var/www/html/wp-content/plugins

Sau đó, sử dụng lệnh WP-CLI để cài đặt UpdraftPlus:

cd /var/www/html/wp-content/plugins

Để kích hoạt plugin:

wp plugin activate updraftplus

Tiếp theo, điều hướng đến tab Plugins trong giao diện quản trị WordPress. Tại đây, bạn sẽ thấy UpdraftPlus – Backup/Restore xuất hiện trong danh sách các plugin đã cài đặt.

Thiet ke chua co ten 52

Để cấu hình cài đặt sao lưu, vào tab Settings trong giao diện quản trị và chọn UpdraftPlus Backups từ danh sách các tùy chọn. Bạn sẽ được đưa đến một màn hình giao diện như hình dưới đây (giữ nguyên bố cục gốc nếu có hình ảnh minh họa).

UpdraftPlus Activated

Trong tab Settings, bạn sẽ thấy menu cho phép bạn lên lịch sao lưu. Nếu muốn kiểm tra hoạt động của plugin, bạn có thể để chế độ này ở “Manual” để kiểm tra chức năng.

Updraft Menu

Phía dưới menu này, bạn sẽ thấy các tùy chọn lưu trữ từ xa. Chọn S3-Compatible (Generic).

S3-Compatible Option

Khi chọn tùy chọn này, bạn sẽ thấy một menu yêu cầu nhập thông tin về DataOnline Space của bạn.

S3 Settings

 Dựa vào URL của Space, bạn có thể xác định được tên bucket và endpoint. Ví dụ, nếu URL của Space là:https://example-name.nyc3.digitaloceanspaces.com

thì example-name là bucket của bạn và nyc3.digitaloceanspaces.com là endpoint. Phần S3 location sẽ là tên bucket của bạn, và S3 end-point sẽ là endpoint.

Ở phía dưới, bạn sẽ thấy các tùy chọn để bao gồm và loại trừ các tệp trong quá trình sao lưu.

Include Exclude File Options

Khi đã điền các cài đặt sao cho phản ánh những gì bạn muốn sao lưu, quay trở lại tab Current Status. Khi bạn chọn Backup Now từ các nút có sẵn ở đầu màn hình, bạn sẽ được đưa đến menu xác nhận sao lưu.

Database Menu

Tại đây, bạn có thể chọn liệu có muốn sao lưu cơ sở dữ liệu hay không.
Khi bạn nhấn Backup Now ở cuối menu, các tệp sao lưu sẽ được tải lên bucket của bạn. Bạn có thể truy cập trang DataOnline Space trong bảng điều khiển DataOnline để kiểm tra các tệp đã được sao lưu. Sau khi kiểm tra chức năng của plugin, bạn có thể điều chỉnh lịch sao lưu theo nhu cầu của mình.

Sao Lưu WordPress Với S3cmd

S3cmd là một công cụ dòng lệnh cho phép quản lý dữ liệu trong các giải pháp lưu trữ đối tượng và cung cấp nhiều tùy chọn để sao lưu dữ liệu WordPress sang Spaces. Nó có thể được sử dụng độc lập trong các lệnh riêng lẻ hoặc trong các script tự động hóa quá trình sao lưu.

Nếu máy chủ của bạn chưa cài đặt S3cmd, hãy cài đặt theo phần “Install S3cmd” của hướng dẫn này và cấu hình với thông tin Space của bạn theo phần “Configure S3cmd.”

Sau khi đã cài đặt và cấu hình S3cmd với thông tin của Space, bạn có thể xác minh cấu hình bằng cách gõ:

s3cmd --dump-config

Kết quả sẽ hiển thị các thông số cấu hình như:

Output

[default]
access_key = Your_Spaces_Access_Key
access_token =
add_encoding_exts =
add_headers =
bucket_location = US
ca_certs_file =
cache_file =
check_ssl_certificate = True
check_ssl_hostname = True
cloudfront_host = cloudfront.amazonaws.com
default_mime_type = binary/octet-stream
delay_updates = False
delete_after = False
delete_after_fetch = False
delete_removed = False
dry_run = False
enable_multipart = True
encrypt = False

...

Giả sử bạn đã kiểm tra thông tin cấu hình S3cmd khớp với thông tin xác thực của Space, bạn đã sẵn sàng sử dụng S3cmd để sao lưu các tệp sang Space. Chúng ta sẽ thực hiện sao lưu thủ công trước khi tạo script tự động hóa.

Tạo Bản Sao Lưu Thủ Công Cho Thư Mục wp-content/uploads

Để tạo một bản sao lưu của thư mục wp-content/uploads, chúng ta sử dụng lệnh s3cmd sync. Lệnh này sẽ chỉ chuyển các tệp mà chưa có trong Space. Mặc dù điều này có thể không quan trọng với một lần chuyển, nhưng sẽ trở nên cần thiết khi số lượng dữ liệu tăng lên.

Giả sử bạn sử dụng bucket có tên sammys-bucket và thư mục sao lưu là sammys-backups trên Space, bạn cần thay thế tên này bằng tên bucket và thư mục sao lưu của bạn (nếu có).

Để đảm bảo các tệp được chuyển đến đúng đích, hãy dùng tùy chọn --dry-run với S3cmd như sau:

s3cmd sync --dry-run /var/www/html/wp-content/uploads s3://sammys-bucket/sammys-backups/

Nếu kết quả báo rằng dữ liệu sẽ được chuyển đến đúng nơi, bạn có thể chạy lệnh mà không có tùy chọn --dry-run:

s3cmd sync /var/www/html/wp-content/uploads s3://sammys-bucket/sammys-backups/

Tạo Bản Sao Lưu Thủ Công Cho Cơ Sở Dữ Liệu MySQL

Chúng ta sẽ tạo một bản sao lưu thủ công cho cơ sở dữ liệu MySQL theo 4 bước:

Tạo thư mục để chứa tệp cơ sở dữ liệu:
Tạo một thư mục trong thư mục home để lưu các tệp cơ sở dữ liệu:

mkdir ~/mysqldmp

Tạo file chứa thông tin tên người dùng và mật khẩu MySQL:
Để tránh phải truyền thông tin này qua dòng lệnh, ta sẽ tạo file cấu hình người dùng MySQL (thông thường được lưu trong ~/.my.cnf).
Mở file:

nano ~/.my.cnf

Và nhập nội dung sau:

~/.my.cnf

[client]
user=mysql_user
password=mysql_password

Sau đó, lưu file bằng cách nhấn CTRL+X rồi Y.

Để hạn chế quyền truy cập chỉ cho người dùng của bạn, gõ:

chmod 600 .my.cnf

Chạy lệnh mysqldump để tạo bản sao lưu và nén bằng gzip:
Gõ lệnh sau để sao lưu cơ sở dữ liệu (thay thế mysqldatabase_name bằng tên cơ sở dữ liệu của bạn):

mysqldump mysqldatabase_name | gzip > ~/mysqldmp/mysql_dump.sql.gz

Sử dụng S3cmd để chuyển tệp đã nén lên Space:
Gõ lệnh sau:

s3cmd sync mysqldmp/mysql_dump.sql.gz s3://sammys-bucket/sammys-backups/

Sau khi thực hiện, bạn sẽ thấy tệp cơ sở dữ liệu đã nén trong Space của bạn.

Tự Động Hóa Sao Lưu WordPress Với Cron

Tự động hóa sao lưu sẽ đảm bảo dữ liệu WordPress của bạn luôn có sẵn và có thể khôi phục được. Mặc dù bạn có thể tạo các bản sao lưu thủ công, điều này rất tốn thời gian, do đó nên tự động hóa bằng trình lập lịch cron.

Để tạo file script sao lưu, hãy sử dụng lệnh:

nano ~/wp-sync.sh

Trong file trống này, trước tiên hãy ghi dòng chỉ ra rằng script sẽ được chạy bởi shell Bash:

wp-sync.sh

#!/bin/bash

Tiếp theo, khai báo các biến xác định thông tin về các tệp và cơ sở dữ liệu cần sao lưu. Biến DATABASEUPLOADS_DIR sẽ chứa tên cơ sở dữ liệu và thư mục cần sao lưu. Chúng ta khai báo dưới dạng mảng, cho phép chỉ định nhiều giá trị:

...
DATABASE=("mysqldatabase_name") # To add more than one database, separate values with spaces: ("database1" "database2")
UPLOADS_DIR=("/var/www/html/wp-content/uploads") # To add more than one directory, separate values with spaces: ("folder1" "folder2")

BACKUP_DIR=/home/sammy/mysqldmp

Biến BACKUP_DIR chỉ định thư mục mà mysqldump sẽ lưu tệp sao lưu:

...

DATE=$(date +%y%m%d-%H_%M_%S)


S3_CMD="/usr/local/bin/s3cmd"
S3_BUCKET=s3://sammys-bucket/sammys-backups/$DATE/

Tiếp theo, chúng ta thiết lập thông tin S3cmd, bao gồm thông tin bucket của Space. Thông tin này sẽ phản ánh cấu hình S3 đã được thiết lập trong file cấu hình S3cmd của bạn.
Khai báo biến S3_CMD chứa đường dẫn tới binary của S3cmd (để sử dụng trong cron) và biến DATE để tạo dấu thời gian cho các tệp sao lưu:

...

mkdir -p $BACKUP_DIR
rm -rf "${BACKUP_DIR:?}/*"

Ở đây, biến DATE được thiết lập rất chi tiết, bao gồm năm (%y), tháng (%m), ngày (%d), giờ (%H), phút (%M) và giây (%S) của thời điểm sao lưu. Bạn có thể điều chỉnh nếu cần.

Tiếp theo, thêm các lệnh tạo thư mục sao lưu (nếu chưa tồn tại) và xoá các tệp cũ trong thư mục đó

Sau đó, tạo vòng lặp để chạy lệnh s3cmd sync cho các tệp cơ sở dữ liệu. Sử dụng lệnh mysqldump để tạo tệp cơ sở dữ liệu đã nén và thêm tùy chọn --defaults-extra-file để cho mysqldump đọc file .my.cnf ngoài các file cấu hình mặc định. Vòng lặp cho mỗi cơ sở dữ liệu sẽ như sau:

...

for DB in "${DATABASE[@]}"
do
mysqldump --defaults-extra-file=/home/sammy/.my.cnf "$DB" | gzip > "$BACKUP_DIR/mysql_dump.sql.gz"
$S3_CMD sync "$BACKUP_DIR/mysql_dump.sql.gz" "$S3_BUCKET"
done

Tiếp theo, tạo vòng lặp cho thư mục cần sao lưu. Lặp qua mảng UPLOADS_DIR để thực hiện lệnh s3cmd sync cho mỗi thư mục:

...

for DIR in "${UPLOADS_DIR[@]}"
do
$S3_CMD sync "$DIR" "$S3_BUCKET"
done

Script đầy đủ sẽ trông như sau:

#!/bin/bash

DATABASE=("mysqldatabase_name") # To add more than one database, separate values with spaces: ("database1" "database2")
UPLOADS_DIR=("/var/www/html/wp-content/uploads") # To add more than one directory, separate values with spaces: ("folder1" "folder2")

BACKUP_DIR=/home/sammy/mysqldmp

DATE=$(date +%y%m%d-%H_%M_%S)

S3_CMD="/usr/local/bin/s3cmd"
S3_BUCKET=s3://sammys-bucket/sammys-backups/$DATE/

mkdir -p $BACKUP_DIR
rm -rf "${BACKUP_DIR:?}/*"

for DB in "${DATABASE[@]}"
do
mysqldump --defaults-extra-file=/home/sammy/.my.cnf "$DB" | gzip > "$BACKUP_DIR/mysql_dump.sql.gz"
$S3_CMD sync "$BACKUP_DIR/mysql_dump.sql.gz" "$S3_BUCKET"
done

for DIR in "${UPLOADS_DIR[@]}"
do
$S3_CMD sync "$DIR" "$S3_BUCKET"
done

Giờ, chúng ta cần làm cho script wp-sync.sh có thể thực thi:

chmod +x ~/wp-sync.sh

Để kiểm tra, bạn có thể chạy:

sudo ~/wp-sync.sh

Sau đó, truy cập DataOnline Space của bạn để kiểm tra rằng các tệp đã được sao lưu đúng theo mong đợi. Khi đã xác nhận, bạn có thể chỉnh sửa file crontab để chạy script theo khoảng thời gian mong muốn.

Mở file crontab bằng lệnh:

crontab -e

Nếu đây là lần đầu tiên bạn chỉnh sửa file crontab, bạn sẽ được yêu cầu chọn một trình soạn thảo (ví dụ: chọn /bin/nano là dễ sử dụng nhất).

crontab
no crontab for root - using an empty one
Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.basic
  4. /usr/bin/vim.tiny
Choose 1-4 [2]: 
...

Bạn có thể chọn 2 để sử dụng nano, hoặc nhập số tương ứng với trình soạn thảo mà bạn muốn sử dụng.

Ở cuối tệp, chúng ta sẽ thêm một dòng để xác định tần suất chạy script. Để kiểm tra chức năng của script, chúng ta có thể đặt khoảng thời gian là mỗi hai phút, như sau:

...

*/2 * * * * /home/sammy/wp-sync.sh

Sau 2 phút, bạn sẽ thấy các tệp sao lưu được tạo ra có dấu thời gian trong DataOnline Space của bạn. Sau đó, bạn có thể điều chỉnh file crontab để thiết lập khoảng thời gian sao lưu phù hợp với nhu cầu của bạn.

Kết Luận

Trong hướng dẫn này, chúng ta đã trình bày một số cách để sao lưu dữ liệu WordPress sang dịch vụ lưu trữ đối tượng của DataOnline (DigitalOcean Spaces ban đầu).
Để biết thêm thông tin về cách làm việc với S3cmd và Spaces, hãy xem hướng dẫn của chúng tôi về “Cấu Hình S3cmd 2.x để Quản Lý DataOnline Spaces” Bạn cũng có thể tham khảo các hướng dẫn về “Cách Tự Động Hóa Sao Lưu với DataOnline Spaces và Cách Sao Lưu Kho Git của Bạn lên DataOnline Spaces để xem thêm các ví dụ về script tự động hóa và các tùy chọn sao lưu. Cuối cùng, để biết thêm thông tin về cách tối ưu hóa việc sử dụng Spaces, hãy xem Các Phương Pháp Tốt Nhất để Cải Thiện Hiệu Suất trên DataOnline Spaces.

Trong quá trình sao lưu dữ liệu website, việc thuê máy chủ VPS không chỉ giúp bạn có không gian lưu trữ linh hoạt mà còn đảm bảo tốc độ truyền tải nhanh chóng. Điều này đặc biệt quan trọng khi bạn cần khôi phục dữ liệu một cách nhanh chóng và hiệu quả.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *