Bài viết này mình sẽ hướng dẫn các bạn tạo Script backup dữ liệu trên máy chủ linux với 1 host hoặc toàn bộ host trên server.
I. Giới thiệu :
Trong quá trình sử dụng không tránh khỏi việc thao tác xóa nhầm hoặc phát sinh lỗi từ nhiều nguyên nhân khác khiến bạn bị mất dữ liệu và không lấy lại được vì vậy bạn cần có phương án dự phòng tốt nhất cho trường hợp xấu có thể xảy ra với website của mình. Vậy để bạn có thể chủ động backup được dữ liệu của mình một cách nhanh chóng và thiết lập để máy chủ tự động chạy Backup theo lịch mà bạn muốn thì có thể tham khảo hướng dẫn sau để tạo Script Backup.
II. Các bước thực hiện :
Bước 1: SSH vào Server Linux của bạn :
Để tạo Script Backup dữ liệu trên Linux chúng ta cần SSH hoặc truy cập VPS hoặc máy chủ của bạn với quyền root. Nếu bạn chưa biết cách SSH vào VPS hoặc Server của bạn thì bạn có thể tham khảo bài viết hướng dẫn sau:
. SSH tới Server LINUX bằng Putty
Bước 2: Tạo script backup dữ liệu :
1. Backup với 1 host :
- Đầu tiên bạn truy cập vào thư mục bin trong root :
cd /bin
- Tạo mới một file và phân quyền thực thi :
touch scriptbk.sh && chmod +x scriptbk.sh
- Mở file và bắt đầu viết :
vi /bin/scriptbk.sh
- Thêm nội dung bên dưới vào file script backup đã tạo :
#!/bin/bash
ngay=$(date +"%Y-%m-%d")
#gán biến cho ngày backup.echo "Backup website ktpa.com"
mkdir /home/backup/$ngay/
##Tao thu muc chua file Backup.mkdir /home/backup/$ngay/ktpa.com/
echo "Start backup database for ktpa.com..."
## Backup Databasemysqldump --single-transaction --routines --triggers --add-drop-table --extended-insert -u ktpa_db -p'NjczYWUw' ktpa_db | gzip -9 > /home/backup/$ngay/ktpa.com/db_$ngay.sql.gz
echo "Start backup files for ktpa.com..." ## Backup Source
zip -r /home/backup/$ngay/ktpa.com/source_$ngay.zip /home/ktpa/domains/ktpa.com/ -q
echo "Backup Database va Source thanh cong at $ngay"
echo "File backup saved at: /home/backup/..."
—————————————
Chú thích các phần bôi đậm bên trên:
- #!/ bin/bash ## giúp UNIX xác định code sẽ được chạy bằng chương trình nào, ở đây ta sẽ dùng bash
- Tên website cần Backup: ktpa.com
- User Database: ktpa_db
- Pass: NjczYWUw
- Tên Database: ktpa_db
- Đường dẫn lưu Backup: /home/backup/
- Đường dẫn website cần Backup: /home/ktpa/domains/ktpa.com/
- Đường dẫn lưu file backup Source + Database: /home/backup
- Tên File Backup Source: source.zip
- Ten File Backup Database: db.sql.gz
Sau khi tạo file trên bạn có thể gõ lệnh bên dưới xem script backup có hoạt động hay không nhé. Nếu chạy được như hình thì đã cấu hình thành công.
sh scriptbk.sh hoặc ./scriptbk.sh
Sau khi chạy script backup thành công Quý khách có thể di chuyển vào thư mục /home/backup… để kiểm tra các file backup. Sau đây là các backup đã chạy được :
2. Backup với tất cả các host và database.
Để chạy lệnh backup database, dump toàn bộ database hoặc một database cụ thể cũng được, và bạn cần thực hiện như sau.
Chỉnh sửa file my.cnf
Bạn sẽ phải thực hiện mở file my.cnf lên, file này thường sẽ nằm trong đường dẫn /etc/my.cnf và thêm vào các dòng sau :
[mysqldump]
user=root
password=passwd root mysql
Sau khi gán thành công thông tin mysql root, thì bạn dump database hệ thống sẽ bỏ qua không hỏi nhập pass root mysql nữa.
Tương tự như thực hiện backup cho host bạn có thể tạo file script backup và phân quyền thực thi cho file :
touch backupall.sh && chmod +x backupall.sh
- Mở file và bắt đầu viết :
vi /bin/backupall.sh
- Thêm nội dung bên dưới vào file script backup đã tạo :
#!/bin/bash
ngay=$(date +"%Y-%m-%d")
echo "Backup all Source $ Database"
mkdir /home/backup/backupall/
mkdir /home/backup/backupall/$ngay/
##Tao thu muc chua file Backup.
echo "Start backup all Database ..."
## Backup Database
mysqldump -u root --all-databases | gzip > databases-$ngay.sql.gz && yes n | mv databases-$ngay.sql.gz /home/backup/backupall/$ngay/
echo "Start backup all Source ..."
## Backup Sourcezip -r /home/backup/backupall/$ngay/source_$ngay.zip /home/ -q
echo "Backup all thanh cong at $ngay"
echo "File backup saved at: /home/backup/backupall..."
————————————
Sau khi tạo file trên bạn có thể gõ lệnh bên dưới xem script backup có hoạt động hay không nhé. Nếu chạy được như hình thì đã cấu hình thành công.
sh backupall.sh hoặc ./backupall.sh
Sau khi chạy script backup thành công Quý khách có thể di chuyển vào thư mục /home/backup/backupall… để kiểm tra các file backup.
III. Tạo Cron để thiết lập thời gian chạy script :
Ví dụ ở đây mình sẽ thiết lập thời gian chạy Backup là 1 ngày 1 lần , thì cách thiết lập Cron sẽ có cấu trúc như sau:
Để tạo Cronjob bạn gỏ lệnh sau và nhấp chữ i hoặc Insert để chỉnh sửa :
crontab -e
Gõ nội dung sau vào cron :
0 2 * * * /bin/scriptbk.sh >> /home/backup/logbackup.txt
0 2 * * * /bin/backupall.sh >> /home/backup/logall.txt
0 2 * * * find /home/backup -type d -mtime +3 -exec rm -rf {} +
Giải thích lệnh trên:
Thiết lập Cron Backup chạy vào 02:00 giờ sáng hàng ngày, và log sẽ được ghi lại tại đường dẫn /home/backup/logbackup.txt
Do script này sẽ lưu trữ File Backup trực tiếp trên VPS nên về lâu dài sẽ chiếm dung lượng VPS. Nên chúng ta sẽ cần thiết lập Cron để xóa các File backup cũ định kỳ , ví dụ ở đây mình sẽ tạo Cron xóa các File Backup cũ và chỉ giữ lại 3 bản backup gần nhất. Thời gian cron chạy vào lúc 02:00 sáng hàng ngày.
Khởi động lại dịch vụ Crond : service crond restart
Sau khi thêm Cron, bạn sử chạy lệnh bên dưới để kiểm tra Cron đã thêm thành công chưa :
cat /var/spool/cron/root
IV: Tổng kết :
Như vậy, thực hiện thành công các bước trên là bạn đã có thể tạo được script backup và Cron Backup tự động cho website của mình trên máy chủ Linux. Việc tạo Cron cho script backup định kỳ sẽ giúp các bạn đảm bảo được dữ liệu của mình trong một số trường hợp xấu có thể xảy ra. Hy vọng bài viết này hữu ích với các bạn, chúc các bạn thực hiện thành công.
Trong quá trình thực hiện nếu có vấn đề lỗi phát sinh, vui lòng gửi yêu cầu về kythuat@pavietnam.vn để được hỗ trợ kiểm tra và xử lý.
Xem thêm các hướng dẫn khác về Server tại đây