服务器备份数据库到电脑

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

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

  1. 运维系统 服务器监控,运维系统 服务器监控

    运维系统 服务器监控 内容精选 换一换 云监控服务的主机监控分为基础监控和操作系统监控,基础监控为云服务器自动上报的监控指标(裸金属服务器不支持基础监控).操作系统监控通过在裸金属服务器中安装Agen ...

  2. 宝,运维100+服务器很头疼怎么办?用行云管家!

    以往我们做运维,绝大多数接触的都是硬件,如服务器.路由器.内存硬盘.交换机,甚至夹水晶头等:而如今云计算的时代,虽然不去机房剪线头,但云端纯键盘运维服务器就得会,面对100+形色各异.数量众多的服务器 ...

  3. oracle 数据库运维技术,Oracle数据库智能运维标准化工艺研究-orastar-DIY数据库运维工具-第1期 导论篇...

    1.编制目的 为了提升运维质量,增强数据库运维标准化.规范化,保障信息系统的安全.稳定.高效运行,助力实现智能运维,star同学在此抛砖引玉,特编制该文档. 2.维度定义 根据运维经验,现将数据库日常 ...

  4. 祝愿天下所有运维的服务器永不宕机!

    虽然今天才周五,但周末就是举国欢庆的除夕和春节了,不过对运维来说,要7*24守护系统,就算放年假也要背着笔记本以便随时远程支撑. 系统出现不稳定有人为因素,也有非人为因素,毕竟底层的服务器.存储这些硬 ...

  5. 远程服务器备份数据库

    –远程服务器备份数据库 EXEC sp_configure 'show advanced options', 1;RECONFIGURE; EXEC sp_configure 'xp_cmdshell ...

  6. 轻松精通数据库管理之道——运维巡检之四(数据库备份)

    前言 做好日常巡检是数据库管理和维护的重要步骤,而且需要对每次巡检日期.结果进行登记,同时可能需要出一份巡检报告. 本系列旨在解决一些常见的困扰: 不知道巡检哪些东西 不知道怎么样便捷体检 机器太多体 ...

  7. 【数据库运维】MYSQL备份恢复管理(上)

    目录 MYSQL备份恢复管理 一,备份类型 二,逻辑备份优缺点 三,MySQL备份内容 四,MySQL备份工具 五,MySQL备份策略 1,策略一:直接拷贝数据库文件 案例:直接拷贝备份数据库comp ...

  8. 【数据库运维】MYSQL备份恢复管理(下)

    目录 五,mysql备份策略 3,策略三:mydumper备份数据库 案例一:备份数据库sc的信息 4,策略四:lvm快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份 案例:lvm ...

  9. 【数据库运维】mysql备份恢复练习

    目录 数据库备份,数据库为school,素材如下 1.创建student和score表 2.为student表和score表增加记录 3.备份数据库school到/backup目录 4.备份MySQL ...

最新文章

  1. Windows Phone SDK update for Windows Phone 7.8
  2. R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
  3. 将你的前端应用打包成docker镜像并部署到服务器?仅需一个脚本搞定
  4. globalmem设备代码分析
  5. AI理论知识基础(19)-线性变换(1)
  6. 利用JS实现点击上一周或下一周却换
  7. spring http缓存_HTTP缓存与Spring示例
  8. CSS Hack 汇总快查
  9. Python chr 函数 - Python零基础入门教程
  10. 【机器学习】机器学习中的缺失值及其填充处理
  11. ML《集成学习(二)Boosting之Adaboosting》
  12. MySQL日期、字符串、数值型转换
  13. 在linux中怎么装python3环境,在Linux环境下安装Python3
  14. DSP芯片概述--7.24
  15. Mujoco 基本教程
  16. 计算机通过镜子测试,镜子测试
  17. ubuntu 17 linux 网络,无路由器的情况下linux(ubuntu 17.04)如何连接联通的校园宽带?...
  18. ♂【超全超详细】2W字零基础小白黑客学习路线,知识体系(附学习路线图)♂
  19. 墙裂推荐6个优质公众号
  20. 算法---程序的灵魂,没错就是灵魂!

热门文章

  1. css之“css3的新特性”
  2. 精进之路-day01
  3. 斯坦福SCI写作公开课目录
  4. docker容器正常启动宿主机却无法正常访问
  5. 奶爸日记-沉迷看小猪
  6. Unity旋转基础——二维旋转与三维旋转
  7. 通讯模块 CI854AK01 3BSE030220R1
  8. 硬核蹭热点系列:负油价和巴舍利耶模型
  9. 方法调用机制内存分析★
  10. linux中ftp服务器的搭建和配置