• Trang chủ
  • Hướng dẫn Backup dữ liệu cho máy chủ

Hướng dẫn Backup dữ liệu cho máy chủ

Backup dữ liệu cho máy chủ là công việc cần thiết để phòng trường hợp rủi ro của hệ thống làm mất dữ liệu quan trọng. Theo đó người dùng chỉ cần viết một Shell script để thực hiện công việc backup để khi nào cần backup. Người dùng chỉ cần gõ một câu lệnh nào đó tự đặt ra thay vì sử dụng các lệnh thủ công và đưa một Shell script tự viết vào crontab để công việc backup diễn ra hoàn toàn tự động.

I. Shell Script là gì?

Shell Script là một ngôn ngữ lập trình kịch bản được thiết kế dành cho môi trường UNIX. Chẳng hạn bạn hay sử dụng các lệnh như cd, unzip,…tất cả lệnh đó đều là Shell script.

Chẳng hạn như bạn cần backup một thư mục nào đó và chuyển file backup đến một thư mục chỉ định, đồng thời xóa các file backup cũ thì nếu bạn tự gõ các lệnh đó thủ công thì bạn sẽ cần gõ khoảng 4, 5 lần. Tuy nhiên với ngôn ngữ Shell, bạn có thể lồng các tác vụ đó vào một file Shell script để khi cần làm việc kia thì bạn chỉ cần gõ một lệnh mà bạn đã đặt ra.

II. Viết Shell script để backup dữ liệu

1.Bắt đầu viết script

Đầu tiên là bạn tạo ra một file với tên backup trong thư mục /bin:

vi /bin/tpbackup
Nhập code sau và sửa theo ý của bạn:

#! /bin/sh
#
ngay=$(date +”%T %d-%m-%Y”)
file_name=”backup-$ngay”
echo
mysqldump –single-transaction –routines –triggers –add-drop-table –extended-insert -u TaikhoanMysql -pMậtkhẩuSQL têndatabase | gzip -9 > thưmụclưu/db_$(date +”%T %d-%m-%Y”).sql.gz
echo
echo “BACKUP CSDL VA CODE THANH CONG VAO LUC $ngay!”
echo
zip -r Đườngdẫnlưubackupcode/$file_name cd /Thưmụccầnbackups > /dev/null
echo “Ten file CSDL backup: $file_name.sql.gz”
echo “Ten file backup code: $file_name.zip”
echo “File backup da duoc luu tai: Đường dẫn đến file backup”
echo
Ví dụ, ở đây mình sẽ lưu file Code và Database vào thư mục /home/backups nhưng khi backup thư mục home sẽ không bao gồm thư mục /backups để tốn dung lượng, mình sử dụng script như sau:

Thông tin SQL của mình là: user là ‘’root’’, pass là ‘123456’ và database mình cần backup là ‘’testdatabase’’

#! /bin/sh
#
ngay=$(date +”%T %d-%m-%Y”)
file_name=”backup-$ngay”
echo
mysqldump –single-transaction –routines –triggers –add-drop-table –extended-insert -u root -p123456 testdatabase | gzip -9 > /home/backups/db_$(date +”%T %d-%m-%Y”).sql.gz
echo
echo “BACKUP CSDL VA CODE THANH CONG VAO LUC $ngay!”
echo
zip -r /home/backups/$file_name cd /home -x “*backups*” > /dev/null
echo “Ten file CSDL backup: $file_name.sql.gz”
echo “Ten file backup code: $file_name.zip”
echo “File backup da duoc luu tai: /home/backups”
echo
Các bạn lưu ý dòng lệnh sau:

cd /home -x “*backups*” : lệnh này là lệnh zip thư mục home nhưng không zip thư mục tên backups ở bên trong thư mục home

Sau đó, bạn lưu lại file và gõ thử lệnh backup để kiểm tra xem script đã hoạt động chưa. Nếu kết quả trả về như dưới đây là script đã hoạt động:

Như vậy là bạn đã có một bản sao lưu cho tất cả website trên máy chủ, khi có vấn đề phát sinh cần khôi phục, bạn chỉ cần giải nén dữ liệu source code và chép vào thư mục chính (Document Root) của website. Với cơ sở dữ liệu bạn chỉ cần giải nén tập tin *.sql.gz sau đó chạy lệnh khôi phục như sau:

#mysql -u [user-database] -p [password-user-database] [database-name] < /path/file.sql

>>> Làm Gì Khi Hệ Thống Máy Chủ Bị Lỗi

III. Tạo Cron Job để tự backup dữ liệu

Cron Job nghĩa là khái niệm chỉ một hành động nào đó được lặp đi lặp lại theo một chu kỳ nhất định. Ở bài này mình sẽ không giải thích rõ Cron Job là gì nên mình chỉ nói về việc sử dụng Cron Job để máy chủ tự động backup theo chu kỳ nhất định.

Lưu ý: Nên sử dụng tài khoản root để tạo cron

Để tạo Cron Job, bạn hãy gõ lệnh sau:

crontab -e
Ấn phím i để chuyển qua chế độ Insert và gõ:

0 00 * * 1,4 backup >> /home/backups/backups-report.txt

Ở đây, dòng crontab được hiểu như sau:
Hệ thống sẽ tự động chạy lệnh backup (Script mà chúng ta vừa viết) vào lúc 12h đêm thứ 2 và thứ 5 hàng tuần và xuất ra file log report được lưu tại:
>> /home/backups/backups-report.txt.
Để kiểm tra xem bạn đã thêm cronjob thành công hay chưa, hãy gõ lệnh xem nội dung của file /var/spool/cron/root:

cat /var/spool/cron/root
Nếu nó hiện ra cái cronjob mà bạn vừa thêm thì thành công.

Tips: Bạn có thể sử dụng công cụ Crontab Code Generator để hỗ trợ tạo crontab nhanh và chính xác.

IV. Dùng Cron để tự động xóa file backup cũ

VPS/SERVER của bạn ít dung lượng, bạn sợ các bản backup sẽ làm full ổ đĩa. Đừng lo, hãy thêm một crontab sau để tự động xóa các file backup cũ nhé. Ở đây mình thiết lập tự động xóa các file backup cũ hơn 7 ngày vào 15h hàng ngày, mình dùng crontab như sau:

15 * * * find /home/backups -type f -mtime +7 -exec rm -f {} ;
Hãy chỉnh sửa /home/backups thành thư mục chứa các file backup của bạn.

Với cách backup dữ liệu máy chủ rất đơn giản hy vọng mọi người có thể thực hiện dễ dàng. Chúc mọi người thành công!

0/5 (0 Reviews)

Leave a Reply