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
Trong bài backup thủ công này, mình sẽ sử dụng lệnh zip
và unzip
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
Để 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/cddos.net/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à cddos.zip thì sẽ viết như sau:
zip -r cddos.zip /home/webdata/cddos.net/public_html/*
Sau khi nén xong, file cddos.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 cddos.zip vào thư mục /home/backup/ thì sẽ viết như sau:
zip -r /home/backup/cddos /home/webdata/cddos.net/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/cddos.net/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/cddos.net/public_html zip -r cddos *
[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 cddos.zip
Để 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 cddos.zip lưu ở /home/backup/ và cần giải nén ra thư mục /home/webdata/cddos.net/public_html thì sẽ viết như sau:
unzip -o /home/backup/cddos.zip -d /home/webdata/cddos.net/public_html
Đố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í.
Để 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à cddos-data.sql thì viết lệnh như sau:
mysqldump -u dulieu1 -p dulieu1_user > cddos-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.
Để 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 < cddos-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;
.
Ở 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.