【运维 | Docker】服务器备份数据库到电脑

news/2024/11/18 9:42:34/

服务器备份数据库到电脑

  • 服务器备份数据库到电脑
    • 思路:
      • 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本地

思路:

准备:

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脚本加密


http://www.ppmy.cn/news/747128.html

相关文章

Enterprise Library Data 微软企业库数据库连接

第一步&#xff1a; 安装NuGet程序包 Enterprise Library Data 第二部 Web.config页配置连接字符串 <!--配置数据库连接--><connectionStrings><add name"SqlConnection" connectionString"User IDsa;Initial CatalogStudent;Data Source.;Pas…

Electron如何在UOS操作系统(统信)下打包成桌面应用?

目录 1.前言 2.解决双击、点击、无法安装、无法运行程序的方法 3. 将appimage文件转为deb文件 4.闭坑&#xff01;Electron打包成deb文件 1.前言 在UOS系统下&#xff0c;deb软件包是可以安装使用的&#xff0c;像linux安装包appimage是无法直接运行的。 这两天感觉掉进坑里…

微软数据库之微软自带数据库分析

视频课 https://edu.csdn.net/course/play/7940 AdventureWorks 案例研究 介绍&#xff1a; Adventure Works Cycles&#xff0c;AdventureWorks 示例数据库所基于的虚构公司&#xff0c;是一家大型跨国生产公司。公司生产金属和复合材料的自行车&#xff0c;产品远销北美、欧…

基于Cat.1模组的共享家电解决方案优势分析

近期&#xff0c;利尔达推出基于NT90系列模组的共享家电解决方案。      众所周知&#xff0c;共享家电虽然是新生事物&#xff0c;却也已经存在了几年。最初的共享家电产品大多采用2G或者NB-IoT蜂窝技术连接方式完成云端连接&#xff0c;为何利尔达要在共享家电中布局Cat.…

数据中心太废电?为省电费阿里和微软是这么做的....

数据中心是个非常耗电的庞大的家伙&#xff0c;据《中国数据中心能耗现状白皮书》显示&#xff0c;2015年数据中心的电耗达1000亿度&#xff0c;年耗电量超过全社会用电量的1.5%。在美国&#xff0c;2013年数据中心领域总用电量就达到恐怖的910亿度。同时据调研&#xff0c;至2…

最简单的方式实现Zotero文件同步+坚果云在多台电脑设备之间

应用场景&#xff1a; 放假回家&#xff0c;只带了笔记本搞科研的好童靴&#xff0c;发现实验室台式机的zotero中的PDF没办法在笔记本上读取。于是探索了一下午如何不重新在网页上保存下载台式机中的PDF&#xff0c;轻松获取异地的文献。 方式一&#xff1a; 氪金付费zotero…

重磅:Docker Desktop正式集成WasmEdge。后者首登GitHubTrending

上周五&#xff0c;Docker Desktop 发布了 4.15 新版本。在这个版本中&#xff0c;Docker Desktop 正式集成了 WasmEdge 的 containerd shim&#xff0c; 并且 Docker Wasm 也从 tech preview 进入到了 beta 阶段。这意味着&#xff0c;1000 万 Docker Desktop 的用户都安装了…

微软Power BI应用实战(1)——实时连接本地数据库

引言&#xff1a;我们知道&#xff0c;微软Power BI可以将本地开发的报表连同数据一起发布到云端&#xff0c;提供给业务用户随时随地访问。但更多的时候&#xff0c;我们希望访问报表时查看到的数据是最新的实时数据。针对这种情况&#xff0c;我们可以利用Power BI提供的本地…