Bash Shell – Backup code and database for cPanel by Script.

Giới thiệu

Dưới đây là hướng dẫn sử dụng script dùng để backup cPanel code và database cho cpanel

  • Khi backup có dạng thư mục như sau: Thư mục được đặt theo tên của Username. Trong thư mục được đặt file nén code và file nén database.
  • Backup thư mục lưu trữ.
    • Thư mục lưu trữ của cPanel là thư mục ~/public_html
    • Nếu user không thuộc cpanel và không có thư mục public_html thì backup toàn bộ thư mục /home/user/
    • Sau khi được backup thì thư mục được nén lại dưới dạng file zip.
    • Sau khi nén được chuyển đến thư mục theo tên người dùng ở trên.
  • Backup database:
    • Phải cung cấp cấp mật khẩu database root cho script.
    • Backup theo các database riêng biệt và được nén sau khi backup
    • File nén được chuyển vào thư mục theo tên người dùng ở trên.

Yêu cầu

  • Hệ điều hành CentOS-7.
  • Sử dụng quyền quản trị để thực hiện
  • Cài đặt các phần mềm yêu cầu:
yum install -y curl zip
  • Đã được cài đặt ssmtp (Sử dụng ssmtp để gửi thông báo về mail)

Thực hiện

Thực hiện tải script Backup:

cd ~
mkdir script && cd script
curl https://raw.githubusercontent.com/huydv398/Bash-script/master/Docs/script/backup-cpanel.md/script.sh > script.sh && chmod +x script.sh

Tiến hành sửa file script.sh:

vi script.sh

Điền mật khẩu cho mysql root :

# Khai báo mật khẩu của mysql_root
# upasswd='Password'
upasswd=''

Thêm các thông tin cho user nhận thông báo (Điền các thông tin vào trong dấu nháy đơn):

chat_id_tele=''
api_tele=''
to_email=''

Thực hiện chọn nơi lưu trữ cho backup, ở đâu tôi chọn thư mục /backup làm nơi lưu trữ backup:

# Đường dẫn mà bạn muốn đặt các file backup
src_folder='backup'

Chạy script backup cPanel:

./script.sh

Thực hiện crontab chạy backup 1 ngày 1 lần vào lúc 0 giờ hằng ngày

crontab -e

Thêm dòng sau vào cuối cùng của file và lưu lại để thực hiện backup cPanel hằng ngày:

0 0 * * * /root/script/script.sh
  • /root/script/script.sh là đường dẫn chính xác của file script.

Xóa các file khi quá lâu

Ở trên crontab sử dụng vào 0 giờ 0 phút hằng ngày nhưng sau nhiều ngày có thể nhiều bản backup được lưu trữ làm khoảng trống dữ liệu bị thu hẹp, ở đây tôi sử dụng câu lệnh sau; mục đích chỉ giữ lại bản ghi backup của 7 ngày gần nhất.

  • /backup2021-v1: Thư mục mà bạn đặt các file backup.
find /backup2021-v1 "*zip" -atime +7 -exec rm {} \;

Sử dụng crontab vào 0h00 Thứ hai hàng tuần, thực hiện các bản ghi cũ chỉ để các bản ghi của 7 ngày gần nhất

0 0 * * find //backup2021-v1 "*zip" -atime +7 -exec rm {} \;

Sử dụng rsync để chuyển các file backup đến máy chủ riêng biệt khác.

Rsync – Remote Sync :Đồng bộ hóa dữ liệu từ xa.

  • Cài đặt rsync:
    • yum install rsync -y

Lệnh thực hiện đồng bộ hóa dữ liệu:

rsync -zvh /backup2021-v1 root@IP:/home/backup
  • /backup2021-v1: thư mục backup
  • root@IP: Thông tin SSH tối server.
  • /home/backup: Nơi lưu trữ trên server mới

Cám ơn các bạn đã đọc. Script vẫn đang trong quá trình test và hoàn thiện mong được sự đóng góp ý kiến từ bạn đọc.

Leave a Comment