Hướng dẫn backup website trên server linux
Backup website
Bạn đang có một website chạy trên vps hay server sử dụng hệ điều hành mã nguồn mở như centos, ubuntu,…, nếu như server hay vps của các bạn có sử dụng các controll panel như Cpanel, DirectAdmin, vectaCP,.. thì việc backup khác đơn giản thông qua giao diện đồ hoạ. Tuy nhiên nếu server của bạn không sử dụng các controll panel thì chúng ta phải backup server bằng dòng lệnh
Để backup website thì chúng ta cần backup source code và database. Sau đây mình sẽ hướng dẫn các bạn cách backup website chạy trên server linux
Hướng dẫn backup website trên linux
Dưới đây là cấu trúc thư mục trên web server của mình
/var/www/anhit.info/public_html #Nơi chứa source code
/var/www/anhit.info/backup/source #Nơi chứa dữ liệu backup source code
/var/www/anhit.info/backup/db #Nơi chứa dữ liệu backup database
Bước 1: Backup source code website
các bạn chạy lệnh sau:
tar -czf /var/www/anhit.info/backup/source/BK-`date +%Y%m%d`.tar.gz /var/www/anhit.info/public_html
Ở đây mình tạo file backup và nén với định dạng .tar.gz, file backup sẽ được lưu trữ theo ngày backup hiện tại, ví dụ BK-20190602.tar.gz
Bước 2: backup database
Để backup database mình sẽ dùng công cụ mysqldump, các bạn có thể tìm hiểu thêm tại đây: MYSQLDUMP – CÔNG CỤ SAO LƯU VÀ PHỤC HỒI DATABASE
chúng ta chạy lệnh sau
mysqldump -u anhit -pAnhit@123 anhit_db | gzip > /var/www/anhit.info/backup/db/db-`date +%Y%m%d`.sql.gz
Với:
- anhit: user quản trị database của website (full quyền)
- Anhit@123: là mật khẩu truy cập database
- anhit_db: tên của database
Ok vậy là chúng ta đã biết cách backup dữ liệu trên server sử dụng linux rồi. Tuy nhiên đây là cách làm thủ công, chúng ta không thể ngày nào cũng login vào server để chạy backup mà thường chúng ta sẽ thực hiện tạo backup tự động.
Để backup tự động trên linux chúng ta sẽ dùng một công cụ đó là crontab
Sử dụng crontab để backup dữ liệu tự động trên website
Để tạo lệnh backup tự động các bạn thực hiện như sau
Đầu tiên chúng ta cần cài đặt công cụ crontab nếu chưa có
yum install cronie #centos apt-get install cron #ubuntu
Ở đây kế hoạch backup website của mình sẽ như sau:
Tự động backup website vào lúc 1h00 hàng ngày, file backup sẽ có định dạng BK-YearMonthDay.tar.gz (với source code) và db-YearMonthDay.sql.gz (với database)
chúng ta sẽ mở file crontab
crontab -e
và thêm vào lệnh sau vào cuối file:
0 1 * * * tar -czf /var/www/anhit.info/backup/BK-`date +\%Y\%m\%d`.tar.gz /var/www/anhit.info/public_html
0 1 * * * mysqldump -u anhit -pAnhit@123 anhit_db | gzip > /var/www/anhit.info/backup/db/db-`date +\%Y\%m\%d`.sql.gz
Xong lưu lại và thoát
Như vậy server chúng ta sẽ tự động thực hiện backup dữ liệu hằng ngày vào lúc 1h00. tuy nhiên thường chúng ta chỉ lưu trữ khoảng 2 hoặc 3 bản backup vì vấn để dung lượng lưu trữ của server do đó chúng ta sẽ xoá các file backup cũ đi và chỉ giữ lại 2 đến 3 bản backup gần nhất thôi
Để thực hiện tự động xoá các file backup cũ các bạn thực hiên như sau:
Mở file crontab
crontab -e
Thêm nội dung sau vào cuối file
0 0 * * /4 cd /var/www/anhit.info/backup/source && rm -rf `ls -1t | tail -n +3`
0 0 * * /4 cd /var/www/anhit.info/backup/db && rm -rf `ls -1t | tail -n +3`
Xong lưu lại và thoát
Ý nghĩa của lệnh trên như sau
Cứ cách 4 ngày vào lúc 0h00 mình sẽ thực hiện xoá lữ liệu
chúng ta sẽ đi vào thư mục chứa dữ liệu backup và thực hiện lệnh remove (xoá file), ở đây chúng ta sẽ sắp xếp file theo thứ tự thời gian file gần nhất trên cùng, mình sẽ xoá hết dữ liệu và chỉ giữ lại 3 file gần nhất tính từ thời điểm hiện tại
Trên đây là hướng dẫn backup website, hi vọng sẽ giúp ích cho các bạn.