Sao lưu định kỳ với CyberPanel và Rclone

Sao lưu / Backup

Sao lưu định kỳ (backup) và lưu trữ phân tán các bản sao là một việc tối quan trọng của webmasters để ‘phòng khi hữu sự’.

Nội dung này thiên về kỹ thuật nên bạn có thể trở về Trang chủ nhé 😅



Sao lưu định kỳ trên CyberPanel

CyberPanel

CyberPanel là hosting control panel (thiệt không biết dịch sang tiếng Việt làm sao!) mà mình chọn để quản lý các máy chủ, vì:

  • Miễn phí (ai mà không thích miễn phí chứ 😉)
  • Nhiều tính năng
  • Tối ưu cao cho các website dùng CMS WordPress
  • Không tốn nhiều tài nguyên hệ thống
  • Giao diện quản lý dạng đồ hoạ GUI

Dĩ nhiên CyberPanel cũng có những điểm chưa hoàn thiện như UX rất rườm rà, thừa chỗ này thiếu chỗ nọ, … Nhưng nhìn chung là ổn cho nhu cầu và trình độ IT ‘còm cõi’ của mình 😅

CyberPanel có kha khá tuỳ chọn sao lưu cho website, dù mình chỉ sử dụng tính năng Schedule Back Up (tự động sao lưu định kỳ). Cách cài đặt như sau:

Tạo nơi chứa các bản sao lưu

CyberPanel cho phép tạo một hoặc nhiều thư mục chứa các bản sao lưu. Để tạo một thư mục này, bạn chọn Back Up > Add/Delete Destination và thao tác như hình minh hoạ dưới đây.

Tạo thư mục sao lưu trên CyberPanel
(bấm vào hình để xem phóng lớn)

Lập lịch sao lưu định kỳ

Thư mục chứa các bản backup đã xong, giờ thì lập lịch sao lưu tại Back Up > Schedule Back Up nhé.

Tạo lịch sao lưu định kỳ trên CyberPanel
(bấm vào hình để xem phóng lớn)

Vậy là bạn đã lập được lịch sao lưu định kỳ hàng ngày rồi đó. Tuy nhiên lịch này sẽ chưa hoạt động vì chưa có website nào cần sao lưu cả (!) Nói CyperPanel rườm rà là chỗ này chứ đâu 😏

Vẫn tại Back Up > Schedule Back Up, hãy tiếp tục các thao tác như hình dưới đây để đưa một / một vài website vào lịch sao lưu định kỳ tại mục Manage Existing Back up Schedules.

Thêm website vào lịch sao lưu định kỳ trên CyberPanel
(bấm vào hình để xem phóng lớn)

Như vầy là mới xong đó. CyperPanel từ đây sẽ tự động sao lưu định kỳ cả website thành một file nén vào 12 giờ mỗi ngày (theo múi giờ của CyberPanel nhé).


Dùng Rclone chuyển bản lưu sang Google Drive

RClone

Sao lưu định kỳ xong bạn đừng thở phào sớm nhé, vì mới 1/2 chặng đường thôi. Các bản lưu của bạn vẫn còn đang nằm trên cùng hosting / máy chủ chứa dữ liệu website nên rủi ro vẫn đang là như nhau.

Cần phải chuyển các bản lưu đến một (hoặc nhiều thì càng tốt) nơi chứa khác như ổ cứng máy tính, hosting / máy chủ khác, lưu trữ đám mây, …

Với tiêu chí ngon – bổ – rẻ, mình dùng dịch vụ lưu trữ đám mây của Google để chứa các bản lưu: Google Drive. Với 15GB miễn phí và tốc độ truy xuất nhanh miễn bàn, việc lưu trữ các bản sao của website be bé chỉ là chuyện nhỏ.

Để tự động chuyển các bản sao lưu định kỳ từ máy chủ sang Google Drive, mình dùng Rclone.

Từ đoạn này trở đi có vẻ hơi ‘khoai’ vì hoàn toàn dùng các dòng lệnh chứ không có giao diện đồ hoạ.

Cài đặt Rclone trên máy chủ

Truy cập vào máy chủ (Linux 64 bit) bằng terminal rồi lần lượt thực hiện các dòng lệnh sau:

cd /root/
wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
\cp rclone-v*-linux-amd64/rclone /usr/sbin/
rm -rf rclone-*

Kết nối Rclone đã có trên máy chủ và tài khoản Google Drive của bạn:

rclone config

Lần lượt trả lời các câu hỏi theo hướng dẫn của Rclone để tiến hành kết nối. Tổng thể toàn bộ quá trình cài đặt kết nối sẽ như dưới đây. Các bạn lưu ý phần chữ màu đỏ để điền và điều chỉnh cho phù hợp nhé.

No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> tên-kết-nối
Type of storage to configure.
Choose a number from below, or type in your own value
13 / Google Drive
   \ "drive"
Storage> 13
Google Application Client Id - leave blank normally.
client_id> Enter
Google Application Client Secret - leave blank normally.
client_secret> Enter
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
scope> 1
ID of the root folder - leave blank normally.  Fill in to access "Computers" folders. (see docs).
root_folder_id> Enter
Service Account Credentials JSON file path  - leave blank normally.
Needed only if you want use SA instead of interactive login.
service_account_file> Enter
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> n
If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?access_type=offlinexxxx<<copy-đường-link-này-dán-vào-trình-duyệt-để-xác-thực-kết-nối-với-Google
Log in and authorize rclone for access
Enter verification code> dán-dòng-xác-nhận-kết-nối-của-Google
Configure this as a team drive?
y) Yes
n) No
y/n> n
--------------------
[remote]
type = drive
client_id =
client_secret =
scope = drive
root_folder_id =
service_account_file =
token = {"access_token":"xxx","token_type":"Bearer","refresh_token":"1/xxx","expiry":"2018-05-16T10:55:03.488381196+07:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name                 Type
====                 ====
tên-kết-nối          drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

Thử kiểm tra kết nối bằng dòng lệnh liệt kê các thư mục trên Google Drive:

rclone lsd tên-kết-nối:

Lập lịch cho Rclone chạy hàng ngày

Việc yêu cầu Rclone di chuyển các bản sao lưu định kỳ lên Google Drive thực ra chỉ cần 1 dòng lệnh. Tuy nhiên mình muốn kết hợp thêm việc xoá toàn bộ thư mục sao lưu trên máy chủ sau khi chuyển, đồng thời xoá các bản sao lưu đã hơn 1 tuần trên Google Drive.

Để thực hiện chuỗi thao tác này, mình tạo một lệnh (script) tại thư mục root có tên backup.sh và cho nó tự chạy mỗi ngày vào lúc 2 giờ sáng.

nano /root/backup.sh

Nội dung của lệnh backup.sh, bạn dán các dòng lệnh dưới đây vào rồi thay đổi phần nội dung màu đỏ cho phù hợp nhé:

/usr/sbin/rclone move --delete-empty-src-dirs /thư-mục-chứa-bản-sao/ tên-kết-nối:thư-mục-chứa-bản-sao-trên-Drive
/usr/sbin/rclone -q --min-age 1w delete tên-kết-nối:thư-mục-chứa-bản-sao-trên-Drive
/usr/sbin/rclone -q --min-age 1w rmdirs tên-kết-nối:thư-mục-chứa-bản-sao-trên-Drive

Phân quyền cho lệnh backup.sh

chmod +x /root/backup.sh

Chạy thử lệnh backup.sh rồi kiểm tra trên Google Drive xem đã nhận được các bạn sao lưu định kỳ cũ chưa

/root/backup.sh

Việc cuối cùng cần làm là tạo cronjob để máy chủ tự động chạy backup.sh mỗi 3 giờ sáng:

EDITOR=nano crontab -e

Dán nội dung dưới đây vào rồi nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát:

0 3 * * * /root/backup.sh > /dev/null 2>&1

Sau quá chừng bước, cuối cùng thì cũng xong! Từ nay mình có thể yên tâm ngủ ngon vì CyberPanel sẽ tự động sao lưu định kỳ hàng ngày các website cho mình, sau đó Rclone cũng tự động chuyển bản sao lên Google Drive (tối đa 7 bản sao gần nhất).

Nội dung có thể chưa được cập nhật. Nếu bạn có những cách thức sao lưu định kỳ và lưu trữ phân tán tiện lợi hơn, hãy chia sẻ ngay dưới phần bình luận nhé.


GÓC BÌNH LUẬN