Shell script backup database VPS gửi sang Telegram

Hiện tại theo như tôi theo dõi có rất nhiều khách hàng sử dụng VPS (máy chủ ảo) mặc dù họ chưa có kiến thức quản trị VPS cũng như hiểu rõ tầm quan trọng của việc quản lý và vận hành website mà chỉ đơn giản là họ tìm kiếm và làm theo hướng dẫn cài đặt script quản lý VPS hoặc cài panel rồi bỏ đấy chứ chưa biết cách quản trị thực sự, họ cũng không màn tới việc sao lưu dữ liệu định kỳ và lưu chúng vào nơi an toàn.

Trong bài viết này sẽ share cho mọi người 1 shell script giúp tự động hóa các quy trình sao lưu databse và bắn lên Telegram để dữ liệu của bạn luôn được an toàn.

Tầm Quan Trọng của Backup Database

Backup cơ sở dữ liệu là một biện pháp cần thiết để tránh mất mát dữ liệu do nhiều nguyên nhân như lỗi hệ thống, sự cố phần cứng hay thậm chí là tấn công mạng. Việc thực hiện sao lưu định kỳ không chỉ giúp bảo vệ dữ liệu mà còn đảm bảo rằng bạn có thể phục hồi lại hệ thống một cách nhanh chóng khi cần thiết.

Tự Động Hóa với Shell Script

Shell script cho phép bạn tự động hóa quy trình sao lưu, giảm thiểu thời gian và công sức cần thiết. Bạn có thể lập lịch cho script chạy tự động vào những thời điểm cụ thể, đảm bảo rằng dữ liệu luôn được sao lưu mà không cần can thiệp thủ công. Điều này không chỉ tiết kiệm thời gian mà còn giảm thiểu rủi ro do sự lơ đãng trong việc thực hiện sao lưu.

Việc gửi file backup qua Telegram là một phương pháp hiệu quả để đảm bảo rằng bạn có thể truy cập dữ liệu sao lưu mọi lúc, mọi nơi. Telegram không chỉ dễ sử dụng mà còn bảo mật, giúp bạn chia sẻ dữ liệu một cách an toàn. Khi có sự cố xảy ra, bạn có thể nhanh chóng khôi phục dữ liệu từ file backup được gửi qua ứng dụng này.

Script tự động backup database trên VPS và gửi sang telegram

Okay, vào việc chính luôn nào, đây là 1 script đơn giản để sao lưu database của 1 website đang sử dụng trên VPS, các thông tin màu đỏ là bạn cần thay đổi để script này có thể hoạt động nhé.

1. Tạo script có tên là backup-db.sh ở thư mục /home/ chẳng hạn
2. Mở file backup-db.sh và thêm code dưới đây vào sau đó thay đổi các thông tin cho phù hợp, BOT_TOKEN và TELEGRAM_CHAT_ID bạn xem ở cuối scrip này nhé.
3. Cho phép file backup-db.sh có quyền thực thi với lệnh chmod +x /home/backup-db.sh
4. Đi đến thư mục home với lệnh cd /home và chạy script này với lệnh ./backup-db.sh và xem kết quả

#!/bin/bash

# Configuration section
DB_USER="nhap_ten_db_user"
DB_NAME="nhap_ten_db_name"
DB_PASSWORD="nhap_password"

BACKUP_DIR="/home/backup"
DATE=$(date +%Y%m%d_%H%M%S)
TELEGRAM_BOT_TOKEN="nhap_BOT_TOKEN"
TELEGRAM_CHAT_ID="nhap_chat_ID"
TELEGRAM_URL="https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage"

# Create backup directory if it does not exist
mkdir -p ${BACKUP_DIR}

# Backup
mysqldump -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} > ${BACKUP_DIR}/${DB_NAME}_backup_${DATE}.sql

# Check if backup is successful
if [ $? -eq 0 ]; then
  echo "Backup successful: ${BACKUP_DIR}/${DB_NAME}_backup_${DATE}.sql"
  MESSAGE="Backup successful: ${DB_NAME} at ${DATE}"
else
  echo "Backup failed!"
  MESSAGE="Backup failed for ${DB_NAME} at ${DATE}"
fi

# Print the message to be sent to Telegram
echo "Message to send: ${MESSAGE}"

# Send Telegram notification
RESPONSE=$(curl -s -X POST ${TELEGRAM_URL} \
  -d chat_id=${TELEGRAM_CHAT_ID} \
  -d text="${MESSAGE}" \
  -d parse_mode=HTML)

# Print Telegram response
echo "Telegram response: ${RESPONSE}"

# Check if there was an error in sending the message
if [[ $RESPONSE == *"\"ok\":true"* ]]; then
  echo "Message sent successfully!"
else
  echo "Error sending message to Telegram!"
fi

# Về BOT_TOKEN bạn có thể login vào Telegram, tìm bot BotFather và tạo cho mình 1 bot, sau đó dễ dàng lấy dc BOT_TOKEN
# Về Chat ID: Tìm chat_id của bạn bằng bạn thử chat với con bot bạn vừa tạo, sau đó truy cập vào link dưới để xem chat ID

https://api.telegram.org/botnhap_BOT_TOKEN/getUpdates

Ví dụ đầu ra như sau: thì 5293015366 chính là chat_id

    {
      "update_id": 784876539,
      "message": {
        "message_id": 25,
        "from": {
          "id": 5293015366,
          "is_bot": false,
          "first_name": "Vũ Trụ",
          "last_name": "Số",
          "username": "vutruweb",
          "language_code": "vi"
        },
        "chat": {
          "id": 5293015366,
          "first_name": "Vũ Trụ",
          "last_name": "Số",
          "username": "vutruweb",
          "type": "private"
        },
        "date": 1728531773,
        "text": "😂"
      }
    },

Sau khi điền các thông tin vào file script, bạn có thể cấp quyền thực thi shell với lệnh: chmod +x /home/backup-db.sh

Sau đó bạn có thể chạy script này để test với lệnh,

cd /home/
./backup-db.sh

Nếu script chạy ngon bạn có thể lên lịch để chúng chạy tự động định kỳ mỗi ngày hoặc mỗi tuần (tuỳ theo yêu cầu)

crontab -e sau đó nhập cron để chạy mỗi ngày hoặc mỗi tuần theo code ở dưới

# chay moi ngay luc 2h sang
0 2 * * * /home/backup-db.sh
# chay moi tuan
0 2 */7 * * /home/backup-db.sh

Ở script trên file database được lưu vào thư mục /home/backup bạn có thể thay đổi lại cho phù hợp nhé.

5/5 - (27 votes)

donate Nếu bạn thấy bài viết có ích bạn có thể donate cho team hoặc chia sẻ bài viết này. Ngoài ra bạn có thể yêu cầu thêm bài viết tại đây
Đã copy
vutruso

Vũ Trụ Số chuyên cung cấp hosting cho WordPress, dịch vụ thiết kế website, quản trị website cho doanh nghiệp, dịch vụ quảng cáo Google, quảng cáo Facebook, các dịch vụ bảo mật website WordPress, tăng tốc website WordPress

Bài viết liên quan