環境:Windows Server 2003 + SQL Server 2000。備份命名:`DB_YYYYMMDD_FULL.bak`。
@ECHO OFF
SET dbbak_dir=E:\Backup\DB
IF NOT EXIST %dbbak_dir% MKDIR %dbbak_dir%
SET B_Database_Name=DB1
SET B_DATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
ECHO USE master; > %dbbak_dir%\FULL_backup.sql
ECHO GO >> %dbbak_dir%\FULL_backup.sql
ECHO BACKUP DATABASE %B_Database_Name% >> %dbbak_dir%\FULL_backup.sql
ECHO TO DISK = '%dbbak_dir%\%B_Database_Name%_%B_DATE%_FULL.bak' >> %dbbak_dir%\FULL_backup.sql
ECHO WITH INIT, NOUNLOAD, COMPRESSION; >> %dbbak_dir%\FULL_backup.sql
ECHO GO >> %dbbak_dir%\FULL_backup.sql
SET OSQL_PATH="C:\Program Files\Microsoft SQL Server\80\Tools\Binn\osql.exe"
SET DBUser=sa
SET DBpassword=StrongPassword
%EOSQL_PATH% -U %DBUser% -P %DBpassword% -i %dbbak_dir%\FULL_backup.sql -o %dbbak_dir%\%B_Database_Name%_%B_DATE%_FULL.log
:: FTP 上傳 (使用 ncftp 避開 Windows FTP 被動/主動模式坑)
SET FTP_User=user1
SET FTP_PW=ftpPass
SET FTP_IP=10.1.9.1
SET FTP_PORT=21
SET FTP_DIR=/home/dbbak
SET NCFTP_PATH="D:\Program Files\NcFTP\ncftpput.exe"
%NCFTP_PATH% -u %FTP_User% -p %FTP_PW% -P %FTP_PORT% %FTP_IP% %FTP_DIR% %dbbak_dir%\%B_Database_Name%_%B_DATE%_FULL.*
:: 保留 7 天 (需 Windows Resource Kit forfiles.exe)
FORFILES /P %dbbak_dir% /D -7 /M %B_Database_Name%*.bak /C "CMD /C DEL @FILE"
FORFILES /P %dbbak_dir% /D -7 /M %B_Database_Name%*.log /C "CMD /C DEL @FILE"
DEL /Q %dbbak_dir%\FULL_backup.sql
#!/bin/bash
cd /home/dbbak/
if ls mm_db_$(date +%Y%m%d)*.BAK 1> /dev/null 2>&1; then
find . -mtime +7 -delete
fi