服务器备份数据库到电脑
- 服务器备份数据库到电脑
- 思路:
- linux:定时备份脚本,会暴露数据库密码,压缩加密密码,需要加密
- win: 定时bat脚本,会暴露服务器密码,需要加密
- 还有一种借助xshell的[Xshell版不暴露密码](http://t.csdn.cn/AXWdM)
- 准备:
- 1. 下载Putty
- 2. Linux备份脚本
- 3. bat定时备份脚本
- 加密:
- 1.Linux脚本加密
- 2.bat脚本加密
- 设置定时任务:
- 1.Linux
- 2.Windows
服务器备份数据库到电脑
有个需求,无多台服务器做容灾,需要实现自动化备份数据库到Win本地
思路:
-
linux:定时备份脚本,会暴露数据库密码,压缩加密密码,需要加密
-
win: 定时bat脚本,会暴露服务器密码,需要加密
-
还有一种借助xshell的Xshell版不暴露密码
准备:
1. 下载Putty
Putty下载
搜索一圈过后,觉得Putty适合本次需求,主要作用是与服务器通信,原因:无法直接通过bat脚本与服务器通信并传输数据
注意:服务器要开启sshd服务
2. Linux备份脚本
#!/bin/bash
find /home/Backup/ -mtime +9 -name "*.zip" -delete && docker exec support_db_1 sh -c 'exec mysqldump --all-databases -u root -p root --all-databases' > /home/Backup/bcksql_`date +\%F-%H-%M`.sql
# zip加密
zip -P 123456 -m /home/Backup/Back_`date +\%F`.zip /home/Backup/*.sql
find /home/Backup/ -mtime +9 -name "*.zip" -delete
删除创建超过10天的zip备份文件
docker exec support_db_1 sh -c ‘exec mysqldump --all-databases -u root -p root --all-databases’ > /home/Backup/bcksql_`date +%F-%H-%M`.sql
-
support_db_1
:DB容器的名字或ID -
-u root -p root
: 数据库的用户名和密码 -
/home/Backup/bcksql_`date +%F-%H-%M`.sql
注意backsql_后的 `
是一定要有的,相当于标识后面的是一个变量
将备份的文件保存到/home/Backup/bcksql_+日期.sql -
zip -P 123456 -m /home/Backup/Back_`date +%F`.zip /home/Backup/*.sql
使用密码123456 压缩/home/Backup/所有SQL文件 到 /home/Backup/Back_+日期.zip 并删除源文件
3. bat定时备份脚本
@echo off
cd /d D:\putty
set currenttime=%date:~0,4%-%date:~5,2%-%date:~8,2%
echo %currenttime%
pscp -P 端口 -pw 密码 root@服务器ip:需要备份的文件路径 存放到本地的路径
Pause
cd /d D:\putty
此命令是进入你存放Putty程序的路径,因为需要借助它,第一个是盘符,第二个是路径
set currenttime=%date:~0,4%-%date:~5,2%-%date:~8,2%
这是设置一个变量,获取今天日期信息,才知道是哪天备份的,这句获取格式的是2022-10-18,有其他需求可以去学习一下其他的用法
pscp
这整句是配置链接信息,服务器需要备份的文件及本地备份路径
Pause
让执行窗口停留
加密:
1.Linux脚本加密
我们借助SHC来进行加密,解密的方法要在运行时,脚本被加载到内存中才能被解密,应当可以防止一部分人轻松解密
- 创建sh脚本
vim back.sh #创建一个sh脚本
# 粘贴上面写好的脚本
- 安装SHC
SHC加密程序使用参数:
-e date (指定过期时间)
-m message (指定过期提示的信息)
-f script_name (指定要编译的shell路径)
-r relax security (在不同操作系统执行)
-v Verbose compilation (输出编译的详细情况)
yum install shc # 安装shc
shc -v -f back.sh # 加密脚本
运行后会生成两个文件,back.x 和 back.x.c
back.x是加密后的可执行的二进制文件
back.x.c是生成back.x的原文件(c语言)
- 运行脚本
./back.sh.x
然后删除源back.sh
2.bat脚本加密
两种方式:
-
1.添加标识符
将以下代码保存为bat文件,双击运行即可,根据提示,输入所要加密文件的绝对路径回车即可。
加密完成后,会在这个加密bat文件目录生成encrypt.bat文件,这个文件就是加密后的文件。@echo off cls color 2a :start cls echo ******************************************************************************* echo * * echo * BAT 加 密 * echo * * echo ******************************************************************************* echo. echo. echo. echo ★ 可以一次性成功加密任何批处理文件, 更省事. echo. echo ★ 可以由您输入任意需要加密的批处理, 加密灵活性更大. echo. echo ★ 能够自动判断错误输入, 更加人性化. echo. echo 说明: 在下面输入需要加密的批处理文件, 直接输入批处理文件名为加密当前目录下的BAT,也可以带路径指定任意BAT. 当前目录下生成的encrypt.bat文件即为加密的批处理. echo. echo. echo. set /p file=请输入需要加密的批处理后按回车键(q=退出): if "%file%"=="q" goto quit echo %file%|findstr /i "\.bat$">nul && goto go echo %file%|findstr /i "\.cmd$">nul && goto go cls echo ============== echo 请正确输入! echo ============== echo. echo. echo 按任意键重新输入...... pause>nul goto start :go if not exist "%file%" goto newly if exist encrypt.bat copy encrypt.bat encryptbak.bat echo %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a >"%tmp%\encrypt.tmp" echo cls>>"%tmp%\encrypt.tmp" type "%file%">>"%tmp%\encrypt.tmp" setlocal enabledelayedexpansion for %%i in ("%tmp%\encrypt.tmp") do ( echo %%~zi >nul 2>nul set size=%%~zi set num=!size:~-1! set /a mod=!num!%%2 if !mod! equ 0 (goto even) else (goto odd) ) :even copy "%tmp%\encrypt.tmp" encrypt.bat del "%tmp%\encrypt.tmp" cls echo ========================== echo 完成批处理加密^_^! echo ========================== echo. echo. echo 按任意键退出...... pause>nul goto quit :odd echo. >>"%tmp%\encrypt.tmp" copy "%tmp%\encrypt.tmp" encrypt.bat del "%tmp%\encrypt.tmp" cls echo ========================== echo 恭喜你, 批处理加密成功^^! echo ========================== echo. echo. echo 按任意键退出...... pause>nul goto quit :newly cls echo ================================ echo 找不到批处理文件, 请重新输入! echo ================================ echo. echo. echo 按任意键开始...... pause>nul goto start :quit exit
将以下代码保存为bat文件,双击运行即可,根据提示,输入所要加密文件的绝对路径回车即可。
解密完成后,会在这个加密bat文件目录生成解密后的文件:@echo off mode con: cols=80 lines=25 :index color 27 cls echo ╭──────────── ──╮ echo │ │ echo ╭─────────┤ BAT 解 密 工 具 ├─────────╮ echo │ │ │ │ echo │ ╰────────── ────╯ │ echo │ │ echo │ │ echo │ 本工具用来对混淆文本编码类型的加密批处理进行解密! │ echo │ │ echo │ 在下面填入需要解密的批处理按回车键即可. │ echo │ │ echo │ 建议直接把待解密的批处理文件拖曳至本窗口释放. │ echo │ │ echo │ 解密成功后会在本程序目录下生成"new_待解密文件名.文件后缀名" │ echo │ 格式的文件. │ echo │ │ echo │ 注意: 如果本目录下存在"new_待解密文件名.文件后缀名"的文件, │ echo │ 将会被替换. │ echo │ │ echo │ │ echo ╰─── ─────────────────────────────╯ echo. set route=%cd% set ravel= set /p ravel= 请输入要解密的批处理: set "ravel=%ravel:"=%" if /i "%ravel:~-4%"==".bat" if exist "%ravel%" goto go if /i "%ravel:~-4%"==".cmd" if exist "%ravel%" goto go cls echo ╭──────────╮ echo ╭─────────┤ 文 件 错 误 ├────────╮ echo │ ╰──────────╯ │ echo │ │ echo │ 指定文件不存在或文件不是批处理类型! │ echo │ │ echo │ 按任意键重新输入... │ echo │ │ echo ╰───────────────── ───────────╯ echo. echo. echo 按任意键重新输入... pause >nul goto index :go for /f "tokens=*" %%c in ("%ravel%") do ( cd /d "%%~dpc" if exist "%route%\new_%%~nxc" attrib -s -h -r -a "%route%\new_%%~nxc" echo author:pengfei@www.cn-dos.net>"%route%\new_%%~nxc" for /f "tokens=*" %%i in (%%~nxc) do ( echo %%i>>"%route%\new_%%~nxc" ) ) cls echo ╭──────────╮ echo ╭─────────┤ 解 密 成 功 ├────────╮ echo │ ╰──────────╯ │ echo │ │ echo │ 恭喜, 批处理解密成功! │ echo │ │ echo ╰──────────────────── ────────╯ echo. echo. echo 按任意键退出... pause >nul exit
-
2.改进制编码
下载一个16进制编辑软件,比如MiniHex。
将要加密的bat文件开头加入两个空行,并拖入到MiniHex软件中将前四个字符改为FF FE
Ctrl + S 保存即可
推荐第二种方式,第一种方式加密后能通过word打开看到原本信息
设置定时任务:
1.Linux
# 安装crontab
yum -y install vixie-cron
yum -y install crontabs
systemctl enable crond.service # 设置开机自启
systemctl is-enabled crond.service #是否开机自启
输入crontab -e
添加定时任务,将你加密得到的可执行文件设置定时执行,需要输入完整路径
0 20 * * * /home/back.sh.x # 每晚8点执行
2.Windows
仅以Win10为例,其他请自行查找
点击放大镜 搜索 任务计划程序
点击 右边的创建任务
-
设置要执行的脚本
-
设置触发事件,高级设置按个人所需,
注意bat脚本的执行时间要后于服务器备份的时间
-
设置任务名称,以及是否用管理员权限执行,按需选择
至此,本文结束
参考链接:
bat脚本加密