linux定时备份文件到其他服务器


描述:每天定时凌晨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位占位符分别为:分 时 日 月 星期。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值