1. 安装expect
yum install expect
2.编写copy.sh脚本
2.1 在home目录下新增copy.sh文件并授权
cd /home touch copy.sh chmod u+x copy.sh vi copy.sh
2.2 复制以下内容 并修改待备份服务器 账号 密码 端口 ip字段
#备份服务器 文件目录 filepath=/data #待备份服务器所用账号的密码 ip username=root password=123 ip=172.16.14.13 prot=22 echo "`date +%Y%m%d` start upload......" echo "`date +%Y%m%d` start upload......" > /home/import.log sleep 5s echo "start copy datafile from remote path..." echo "start copy datafile from remote path..." >> /home/import.log /usr/bin/expect <<EOF #设置超时时间 set timeout 36000 #-r 为 递归复制整个目录,即现在会将/home/20181025/整个文件夹拷贝过去 #-p 为保留源文件权限 #顺便提下 -P 22 可以修改传输端口,不写默认为22 #root为B上的用户账号 #/home/ 为传输到的目录,即A上的/data 整个文件夹会被放到B上的/home/文件夹下 spawn scp -r -p $prot $filepath $username@$ip:/home/ expect "*assword:" send "$password\r" send "exit\r" expect eof EOF if [ $? = 0 ]; then echo "datafile copy successful!" echo "datafile copy successful!" >> /home/import.log else echo "datafile copy failed!" echo "datafile copy failed!" >> /home/import.log fi
3. 使用crontab 创建定时任务
时间示例(可自行设置执行时间):
43 21 * * * 每天的21:43 执行
15 05 * * * 每天的05:15 执行
0 17 * * * 每天的17:00 执行
0 17 * * 1 每周一的 17:00 执行
0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 执行
0-10 17 1 * * 毎月1日从 17:00到7:10 毎隔1分钟 执行
0 0 1,15 * 1 毎月1日和 15日和 一日的 0:00 执行
42 4 1 * * 毎月1日的 4:42分 执行
0 21 * * 1-6 周一到周六 21:00 执行
0,10,20,30,40,50 * * * * 每隔10分 执行
*/10 * * * * 每隔10分 执行
1 * * * 从1:0到1:59 每隔1分钟 执行
0 1 * * * 1:00 执行
0 */1 * * * 毎时0分 每隔1小时 执行
0 * * * * 毎时0分 每隔1小时 执行
2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02 执行
30 5 1,15 * * 1日 和 15日的 5:30 执行
我这边是每天凌晨一点跑一次
crontab -e
将 * 1 * * * /home/copy.sh 复制进去并保存