【运维 | Docker】服务器备份数据库到电脑
服务器备份数据库到电脑
- 服务器备份数据库到电脑
- 思路:
- 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_+日期.sqlzip -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脚本加密
【运维 | Docker】服务器备份数据库到电脑相关推荐
- 运维系统 服务器监控,运维系统 服务器监控
运维系统 服务器监控 内容精选 换一换 云监控服务的主机监控分为基础监控和操作系统监控,基础监控为云服务器自动上报的监控指标(裸金属服务器不支持基础监控).操作系统监控通过在裸金属服务器中安装Agen ...
- 宝,运维100+服务器很头疼怎么办?用行云管家!
以往我们做运维,绝大多数接触的都是硬件,如服务器.路由器.内存硬盘.交换机,甚至夹水晶头等:而如今云计算的时代,虽然不去机房剪线头,但云端纯键盘运维服务器就得会,面对100+形色各异.数量众多的服务器 ...
- oracle 数据库运维技术,Oracle数据库智能运维标准化工艺研究-orastar-DIY数据库运维工具-第1期 导论篇...
1.编制目的 为了提升运维质量,增强数据库运维标准化.规范化,保障信息系统的安全.稳定.高效运行,助力实现智能运维,star同学在此抛砖引玉,特编制该文档. 2.维度定义 根据运维经验,现将数据库日常 ...
- 祝愿天下所有运维的服务器永不宕机!
虽然今天才周五,但周末就是举国欢庆的除夕和春节了,不过对运维来说,要7*24守护系统,就算放年假也要背着笔记本以便随时远程支撑. 系统出现不稳定有人为因素,也有非人为因素,毕竟底层的服务器.存储这些硬 ...
- 远程服务器备份数据库
–远程服务器备份数据库 EXEC sp_configure 'show advanced options', 1;RECONFIGURE; EXEC sp_configure 'xp_cmdshell ...
- 轻松精通数据库管理之道——运维巡检之四(数据库备份)
前言 做好日常巡检是数据库管理和维护的重要步骤,而且需要对每次巡检日期.结果进行登记,同时可能需要出一份巡检报告. 本系列旨在解决一些常见的困扰: 不知道巡检哪些东西 不知道怎么样便捷体检 机器太多体 ...
- 【数据库运维】MYSQL备份恢复管理(上)
目录 MYSQL备份恢复管理 一,备份类型 二,逻辑备份优缺点 三,MySQL备份内容 四,MySQL备份工具 五,MySQL备份策略 1,策略一:直接拷贝数据库文件 案例:直接拷贝备份数据库comp ...
- 【数据库运维】MYSQL备份恢复管理(下)
目录 五,mysql备份策略 3,策略三:mydumper备份数据库 案例一:备份数据库sc的信息 4,策略四:lvm快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份 案例:lvm ...
- 【数据库运维】mysql备份恢复练习
目录 数据库备份,数据库为school,素材如下 1.创建student和score表 2.为student表和score表增加记录 3.备份数据库school到/backup目录 4.备份MySQL ...
最新文章
- Windows Phone SDK update for Windows Phone 7.8
- R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
- 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定
- globalmem设备代码分析
- AI理论知识基础(19)-线性变换(1)
- 利用JS实现点击上一周或下一周却换
- spring http缓存_HTTP缓存与Spring示例
- CSS Hack 汇总快查
- Python chr 函数 - Python零基础入门教程
- 【机器学习】机器学习中的缺失值及其填充处理
- ML《集成学习(二)Boosting之Adaboosting》
- MySQL日期、字符串、数值型转换
- 在linux中怎么装python3环境,在Linux环境下安装Python3
- DSP芯片概述--7.24
- Mujoco 基本教程
- 计算机通过镜子测试,镜子测试
- ubuntu 17 linux 网络,无路由器的情况下linux(ubuntu 17.04)如何连接联通的校园宽带?...
- ♂【超全超详细】2W字零基础小白黑客学习路线,知识体系(附学习路线图)♂
- 墙裂推荐6个优质公众号
- 算法---程序的灵魂,没错就是灵魂!