sql database periodically synchronize and upload ftp script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
@echo
off
set
USER
=root
set
PASSWORD
=root
set
DATABASE
=**
rem 备份文件存储路径
set
BACKUP_DIR=f:\DMP_BACKUP\dmp_backup
rem 备份文件目录 处理小时
set
h=%
time
:~0,2%
set
h=%h: =0%
set
DUMPFILE=%
date
:~0,4%%
date
:~5,2%%
date
:~8,2%-%h%%
time
:~3,2%_dmp.sql
set
OPTIONS=-u%
USER
% -p%
PASSWORD
% %
DATABASE
%
set
DATE_TIME=%
date
:~0,4%-%
date
:~5,2%-%
date
:~8,2% %
time
:~0,2%:%
time
:~3,2%:%
time
:~6,2%
rem 判断备份文件存储目录是否存在,否则创建该目录
if
not
exist %BACKUP_DIR% (
echo
------目录不存在 创建目录...
mkdir %BACKUP_DIR%
)
rem 记录日志
echo %
date
:~0,4%-%
date
:~5,2%-%
date
:~8,2% %
time
:~0,2%:%
time
:~3,2%:%
time
:~6,2%:
Database
Backup
Begin
... >> %BACKUP_DIR%\log.txt
rem 上一次备份文件的大小 用于预警
cd /d f:\DMP_BACKUP\dmp_backup\
for
/f
"tokens=*"
%%f
in
(
'dir *.sql /b /od /a-d'
) do (
set
f=%%f&
set
old_size=%%~zf)
echo
------上次备份文件:%f% ( %old_size% 字节)
echo
------备份开始...
rem 使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件
rem 名字可能存在空格,所以加引号
mysqldump %OPTIONS% > %BACKUP_DIR%\%DUMPFILE%
rem 判断数据库备份是否成功? 失败%errorlevel%返回6
if %errorlevel% gtr 0 (
echo %
date
:~0,4%-%
date
:~5,2%-%
date
:~8,2% %
time
:~0,2%:%
time
:~3,2%:%
time
:~6,2%:
Database
Backup Fail... ... >> %BACKUP_DIR%\log.txt
echo
------备份失败...
)
else
(echo %
date
:~0,4%-%
date
:~5,2%-%
date
:~8,2% %
time
:~0,2%:%
time
:~3,2%:%
time
:~6,2%:
Database
Backup success Backup Address: %BACKUP_DIR%\%DUMPFILE%
>> %BACKUP_DIR%\log.txt
echo
------备份成功...
)
rem 判断备份数据的大小,理论上备份数据会越来越大
FOR
/f
"delims="
%%i
in
(
"%BACKUP_DIR%/%DUMPFILE%"
) do (
set
/a size_M=%%~zi/1048576
set
/a size_b=%%~zi
)
set
/a change_size=%size_b%-%old_size%
echo
------此次备份文件:%DUMPFILE% ( %size_b% 字节) 增加了%change_size% 字节
echo %
date
:~0,4%-%
date
:~5,2%-%
date
:~8,2% %
time
:~0,2%:%
time
:~3,2%:%
time
:~6,2%:
Database
Backup
Size
%size_M% MB (%size_b% Byte) change %change_size% Byte >>
%BACKUP_DIR%\log.txt
echo.>> %BACKUP_DIR%\log.txt
rem 删除30天前的备份数据
rem 指定天数
set
DaysAgo=30
forfiles /p f:\DMP_BACKUP\dmp_backup\ /s /m *.* /d -%DaysAgo% /c
"cmd /c del @file"
if %errorlevel% gtr 0 (
echo
------没有删除本地备份
)
echo
------开始上传ftp
echo
open
ftp.******.com>abc.txt
echo
user
username
password
>>abc.txt
echo cd dmp_backup
echo cd dmp_backup
echo prompt
off
echo mdelete log.txt
echo put
"f:\DMP_BACKUP\dmp_backup\log.txt"
"dmp_backup\dmp_backup\log.txt"
>> abc.txt
echo put
"%BACKUP_DIR%\%DUMPFILE%"
"dmp_backup\dmp_backup\%DUMPFILE%"
>> abc.txt
echo bye>>abc.txt
ftp -n -s:abc.txt
if %errorlevel% EQU 0 (
echo
------上传ftp成功
)
del abc.txt
pause
|
这个脚本很多功能略显鸡肋,有时间在修改一下。大家有什么问题可以留言。