Hướng dẫn backup website trên server linux

//

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

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.

Leave a Comment