Trang chủ WordpressHướng dẫn Wordpress Backup & Restore WordPress trên Linux Server – Cách làm thủ công

Backup & Restore WordPress trên Linux Server – Cách làm thủ công

bởi Thạch Phạm
7 bình luận 5234 views
Khuyến mãi hosting

Khi đã sử dụng VPS rồi thì việc thao tác các dòng lệnh để tự mình backup và khôi phục dữ liệu thủ công trên đó bạn chắc chắn phải nắm được để linh hoạt hơn mà không phải lúc nào chúng ta có thể dựa vào các công cụ tự động hóa được.

Trong bài này, mình sẽ chỉ hướng dẫn các bạn backup các dữ liệu của website trên VPS. Còn các dữ liệu khác như cấu hình của VPS, Webserver,…thì bạn nên tự download các file đó về máy để cất giữ thì hay hơn.

Nên xem trước: Học VPS căn bản

I. Cài phần mềm cần thiết

Trong bài backup thủ công này, mình sẽ sử dụng lệnh zipunzip vì lệnh này dễ sử dụng hơn lệnh tar nhiều. Do đó, bạn cần chắc chắn là VPS của bạn đã có cài phần mềm ZIP bằng cách chạy lệnh sau để cài:

sudo yum install zip unzip -y

II. Backup và khôi phục source code

2.1) Backup source code

Để backup các file và folder trong source code của website trên VPS, chúng ta sẽ sử dụng lệnh zip với cấu trúc như sau:

zip [tùy chọn] [tên-file-cần-tạo] [thư-mục-cần-nén]

Trong đó, mục [tùy chọn] sẽ có rất nhiều tùy chọn nhưng hầu hết mình chỉ sử dụng một tùy chọn đó là -r: nghĩa là sẽ nén luôn cả toàn bộ file trong các thư mục con của thư mục cần nén.

Ví dụ mình có source code tại đường dẫn VirtualHost là /home/webdata/thachpham.com/public_html và mình cần nén lại toàn bộ file và thư mục trong đó thành một file tên là thachpham.zip thì sẽ viết như sau:

zip -r thachpham.zip /home/webdata/thachpham.com/public_html/*

Sau khi nén xong, file thachpham.zip sẽ được lưu tại thư mục mà bạn đang truy cập do mình không viết rõ đường dẫn cần lưu file. Nếu mình cần lưu file thachpham.zip vào thư mục /home/backup/ thì sẽ viết như sau:

zip -r /home/backup/thachpham /home/webdata/thachpham.com/public_html/*

Nhưng bạn xin lưu ý một chỗ, nếu bạn không cd vào thư mục cần zip thì khi zip, nó sẽ gom toàn bộ cây thư mục vào. Ví dụ như mẫu lệnh ở trên, thì khi giải nén ra nó sẽ có thư mục /home/webdata/thachpham.com/public_html chứ không chỉ có source code không.

Do vậy, nếu cần zip thì tốt nhất bạn nên cd vào thư mục trước rồi zip sau như ví dụ sau đây:


cd /home/webdata/thachpham.com/public_html

zip -r thachpham *


[root@hocvps ~]# ls -al /home/backup
total 15432
drwxr-xr-x 2 root root 4096 Sep 24 09:12 .
drwxr-xr-x 4 root root 4096 Sep 24 09:12 ..
-rw-r--r-- 1 root root 15792563 Sep 24 09:12 thachpham.zip

2.2) Khôi phục source code từ file dự phòng

Để khôi phục dữ liệu hay còn gọi là xả nén dữ liệu dự phòng ra, bạn có thể sử dụng lệnh unzip nếu file đó là .zip mà bạn đã làm ở cách trên. Cấu trúc lệnh unzip là như sau:

unzip [tùy-chọn] [tên-file] -d [tên-đường-dẫn-cần-lưu]

Trong phần tùy chọn, mình hãy sử dụng nhất tùy chọn -o để ghi đè lên các file cũ trong thư mục cần giải nén nếu có.

Ví dụ mình có file thachpham.zip lưu ở /home/backup/ và cần giải nén ra thư mục /home/webdata/thachpham.com/public_html thì sẽ viết như sau:

unzip -o /home/backup/thachpham.zip -d /home/webdata/thachpham.com/public_html

III. Sao lưu & Phục hồi database

Đối với databse thì cũng không hề khó lắm đâu, chỉ với 1 lệnh duy nhất. Tuy nhiên, lệnh backup và phục hồi sẽ hơi khác nhau một tí.

3.1) Backup database

Để backup database, chúng ta sẽ sử dụng lệnh mysqldump theo cấu trúc:

mysqldump -u [tên database username] -p [tên database cần backup] > [tên file cần lưu].sql

Ví dụ mình có 1 database tên là dulieu1 với database username là dulieu1_user và cần backup ra một file tên là thachpham-data.sql thì viết lệnh như sau:

mysqldump -u dulieu1 -p dulieu1_user > thachpham-data.sql

Nó sẽ hỏi mật khẩu của database user, bạn chỉ cần nhập vào là xong. Còn nếu bạn không muốn gõ mật khẩu sau khi chạy lệnh thì viết -p123456, 123456 là mật khẩu database.

Backup xong thì file .sql sẽ được lưu ở thư mục hiện tại mà bạn đang truy cập, muốn nó tự chuyển đi ra thư mục khác khi backup xong thì chỉ cần thêm đường dẫn cụ thể ở phần tên file .sql cần lưu.

3.2) Khôi phục database

Để khôi phục database ta không sử dụng mysqldump mà sẽ sử dụng lệnh mysql với cúa trúc:

mysql -u [tên database username] -p [tên database cần được khôi phục] < [tên file .sql cần khôi phục]

Ví dụ:

mysql -u dulieu1_user -p123456 dulieu1 < thachpham-data.sql

Lưu ý là nếu database bạn đang có dữ liệu rồi thì tốt nhất hãy xóa data đó đi và tạo lại một database mới rồi hẵng import vì nó không hỗ trợ ghi đè.

Câu lệnh xóa database trong SQL là DROP DATABASE tên-data-cần-xóa;.

Lời kết

Ở bài này mình chỉ cần bạn biết căn bản thế thôi nhưng thao tác này rất quan trọng và hữu ích sau này nên nếu bạn gõ lệnh chưa quen thì hãy tập gõ cho nó quen dần.

Ở bài sau, mình sẽ hướng dẫn bạn tự tạo ra một dòng lệnh để hỗ trợ backup giống như ý của bạn thay vì gõ từng đoạn zip và mysqldump rất mất công và kém chuyên nghiệp.

7 bình luận

Có thể bạn quan tâm

7 bình luận

tran hung 28/05/2017 - 12:34 Chiều

cho mình hỏi đối với cơ sở dữ liệu lớn thì có cách nào backup từng phần không ạ? Kiểu như mỗi tuần mình cập nhật những dữ liệu mới thêm vào so với tuần trước

Reply
Thang 04/04/2017 - 9:03 Sáng

mình unzip nó báo lỗi như này laa2 sao ạ, tks
Archive: videocolours.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of videocolours.zip or
videocolours.zip.zip, and cannot find videocolours.zip.ZIP, period.

Reply
hung 30/10/2016 - 9:18 Sáng

mysqldump: Got error: 1045: “Access denied for user ‘thichdidi’@’localhost’ (using password: YES)” when trying to connect
nó báo như này là sao anh? Em đang dùng vps của azdigi?

Reply
Thạch Phạm 30/10/2016 - 5:50 Chiều

Lỗi này là do bạn nhập sai mật khẩu hoặc tên user database nhé.

Reply
Dang Nguyen 18/08/2016 - 4:25 Chiều

ThachPham cho mình hỏi khi backup có cần tắt plugin w3 total cache không ?

Reply
Dong 30/06/2016 - 9:45 Sáng

Cho mình hỏi tí chỗ khôi phục database
mysql -u [tên database username] -p [tên database cần được khôi phục] < [tên file .sql cần khôi phục]
Vậy đường dẫn của database [tên file .sql cần khôi phục] mình đặt ở đâu vậy?

Reply
Thạch Phạm 02/07/2016 - 11:03 Sáng

Nếu bạn muốn khai báo đường dẫn thì thêm đường dẫn vào thôi. Ví dụ: /home/myname/data.sql

Reply

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

* Khi bình luận, bạn đồng ý rằng thông tin bạn nhập vào bao gồm tên, email và địa chỉ IP sẽ được lưu giữ tại website.