?一、環境準備與工具安裝?
?1. 安裝 Microsoft SQL Server 命令行工具?
Fedora 需安裝?mssql-tools
?和 ODBC 驅動:
# 添加 Microsoft 倉庫
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo# 安裝工具包
sudo dnf install -y mssql-tools unixODBC-devel# 添加工具路徑到環境變量
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
?2. 驗證網絡連通性?
確保 Fedora 可以訪問 SQL Server 的端口:
nc -zv 192.168.1.29 1433
# 若輸出 "succeeded!" 表示連接正常
?二、備份腳本編寫?
?1. 創建備份腳本?sql_backup.sh
#!/bin/bash# 配置參數
SERVER="192.168.1.29,1433" # SQL Server 地址和端口
USER="sa" # 用戶名
PASSWORD="Kl.2024erp" # 密碼
DATABASES=("SMDB_001_2024" "SMIS") # 數據庫列表
BACKUP_DIR="/opt/sql_backups" # Fedora本地備份目錄
DATE=$(date +"%Y%m%d") # 當前日期(格式:20231001)# 創建本地備份目錄(如果不存在)
mkdir -p "$BACKUP_DIR"# 循環備份每個數據庫
for DB in "${DATABASES[@]}"; do# 定義備份文件名(含日期)BACKUP_FILE="${BACKUP_DIR}/${DB}_${DATE}.bak"# 執行備份命令echo "正在備份數據庫: $DB ..."sqlcmd -S "$SERVER" -U "$USER" -P "$PASSWORD" -Q "BACKUP DATABASE [$DB] TO DISK='$BACKUP_FILE' WITH FORMAT, COMPRESSION"# 檢查備份結果if [ $? -eq 0 ]; thenecho "成功: 數據庫 $DB 已備份到 $BACKUP_FILE"elseecho "錯誤: 數據庫 $DB 備份失敗!"exit 1fi
doneecho "所有數據庫備份完成!"
??2. 賦予腳本執行權限
chmod +x sql_backup.sh
?三、執行備份?
?1. 手動運行腳本
./sql_backup.sh
?2. 預期輸出
正在備份數據庫: SMDB_001_2024 ...
成功: 數據庫 SMDB_001_2024 已備份到 /opt/sql_backups/SMDB_001_2024_20231001.bak
正在備份數據庫: SMIS ...
成功: 數據庫 SMIS 已備份到 /opt/sql_backups/SMIS_20231001.bak
所有數據庫備份完成!
?2. 修改腳本的備份路徑?
將?BACKUP_DIR
?改為掛載點:
BACKUP_DIR="/mnt/sql_backup"