描述:每天定时凌晨1点,在A服务器把项目文件、数据库文件打压缩包,传输到B服务器。
注意:需要root登录服务器,否则可能出现权限等错误

一、编写命令文件

1. 创建backup.sh文件,内容如下
#/bin/bash

#声明zt,变量值为昨天
zt=`date -d "yesterday" +%Y%m%d`
echo $zt
#复制myfiles下的文件到/backup/$zt/file
cp -r /myfiles /backup/$zt/file
#全量导出数据库文件到/backup/$zt(下边命令是DM的导出方式,不同数据库的命令也不同)
cd /home/dmdbms/bin
./dexp userid=SYSDBA/SYSDBA:5236 DIRECTORY=/backup/$zt file=mscode_full.dmp log=mscode_full.log full=y
#把文件夹打包
tar -zcPvf /backup/$zt.tar.gz /backup/$zt
#删除临时文件内容
#rm -rf /backup/$zt
#删除改文件夹下超过30天的文件
#find ./ -mtime +30 -name "*.tar.gz" -exec rm -rf {} ;
#删除2天以后的数据
#find /app/backup/ -type f -mtime +2 -exec rm {} \;
#sshpass 方式登录B服务器并传输
#sshpass -p "123456" scp /backup/333.txt root@192.168.1.110:/data/backup/
#expect方式登录192.168.1.110(B)服务器并传输压缩包到data下,root为B登录账号
expect <<EOF
spawn scp -r /backup/$zt.tar.gz root@192.168.1.110:/data/
expect "*password:"
send "123456\r"
expect eof
EOF

注意密码后有 \r
scp:传输方式,还有很多种,可以自行查询
sshpass:免手动输密码(明文)
expect:免手动输密码(隐藏)

2. 以上为.sh文件,编辑好后放到A服务器/backup下,手动执行测试
sh /backup/backup.sh

如果提示expect不是命令或expect相关的信息,执行下方任一条命令安装即可

#安装
apt -y install expect
#安装
yum –y intall expect
3. 运行完毕后,登录B服务器查看文件是否存在,存在则测试成功。

二、执行定时计划

#查看计划列表
crontab -l
#添加计划
crontab -e
#每天1点执行一次
0 1 * * * sh /backup/backup.sh
#每30分钟执行一次
#*/30 * * * * sh /backup/backup.sh
输入完后Ctrl+C,在输入 :wq 退出(注意冒号)
#重启计划
systemctl restart crond.service
#查看计划状态
systemctl status crond.service

corn的5位占位符分别为:分 时 日 月 星期。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐