通过shell 备份数据、系统定时任务

  • shell备份docker中的数据库
    • docker exec 
  • crontab 系统定时任务
    • crontab参数说明
    • 特殊符号 
    • 实例说明
  • shell备份docker中的数据库

#!/bin/bash
echo "开始备份"
#定义当前时间
now=$(date "+%Y%m%d %H:%M:%S")
#now=date +%Y%m%d %H:%M:%S
backup_dir="/mydata/back_up"
#通过名称查找容器Id
mysql=`docker ps -aqf "name=mysql"`
echo $mysql
docker exec -i  ${mysql} bash<<'EOF'
#mysqldump导出表结构和数据

if [ ! -d "/backup" ]; then
    mkdir -p /backup
fi

if [ -f "/backup/db.sql" ]; then
    rm -rf /backup/db.sql
fi

#mysqldum --single-transaction -uroot --password=*** --all-databases > /backup/db.sql

mysqldump --single-transaction -uroot --password=*** --hex-blob --databases wqsw > /backup/db.sql

echo '成功制作备份sql'

if [ $? -ne 0 ]; then
    echo 'mysqldump运行失败'
    exit
    EOF
fi

exit

EOF

#将容器内sql文件导出到服务器
if [ ! -d "${backup_dir}" ]; then
    mkdir -p "${backup_dir}"
fi

docker cp ${mysql}:/backup/db.sql ${backup_dir}/db_${now}.sql

if [ $? -ne 0 ]; then
    echo 'docker cp文件失败'
    exit
fi
echo '完成备份数据'
  •     docker exec 使用方式 

 docker exec --help

Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a
                             container
  -e, --env list             Set environment variables
      --env-file list        Read in a file of environment variables
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format:
                             <name|uid>[:<group|gid>])
  -w, --workdir string       Working directory inside the container

docker exec选项列表:
名称 默认     描述
--detach, -d  后台运行模式,在后台执行命令相关命令
--detach-keys  覆盖容器后台运行的一些参数信息
--env, -e      设置环境变量
--interactive, -i 展示容器输入信息STDIN
--privileged  为命令提供一些扩展权限
--tty, -t      命令行交互模式
--user, -u      设置用户名(format: <name|uid>[:<group|gid>])
--workdir, -w  指定容器内的目录

  • crontab 系统定时任务

systemctl restart crond
systemctl status crond

crontab -e
选项功能

-e

编辑 crontab 定时任务

-l

查询 crontab 任务

-r

删除当前用户所有的 crontab 任务

#每一份执行dump.sh 脚本
*/1 * * * * /mydata/dump.sh
项目含义范围 
第一个“*”一小时当中的第几分钟0-59 
第二个“*”一天当中的第几小时 0-23 
第三个“*”一个月当中的第几天 1-31 
第四个“*”一年当中的第几月 1-12 
第五个“*”一周当中的星期几 

0-7 ( 0 和 7 都 代 表 星 期 

日) 

特殊符号 

特殊符号

含义
*

代表任何时间。比如第一个“*”就代表一小时中每分钟 

都执行一次的意思。

代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表 

在每天的 8 点 0 分,12 点 0 分,16 点 0 分都执行一次命令 

-

代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在 

周一到周六的凌晨 5 点 0 分执行命令 

*/n 

代表每隔多久执行一次。比如“*/10 * * * * 命令”,代 

表每隔 10 分钟就执行一遍命令 

实例说明

时间含义 
45 22 * * *每天 22 点 45 分执行
0 17 * * 1每周 1 的 17 点 0 分执行
0 5 1,15 * *每月 1 号和 15 号的凌晨 5 点 0 分执行
40 4 * * 1-5每周一到周五的凌晨 4 点 40 分执行命

*/10 4 * * * 

0 0 1,15 * 1 

每天的凌晨 4 点,每隔 10 分钟执行一次命令 

每月 1 号和 15 号,每周 1 的 0 点 0 分都会执行命令

备注:星期几和几号最好不要同时出现,因为他们定义的都 是天。非常容易让管理员混乱。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值