任务:完成数据迁移自动化脚本的部署,并形成说明文档。
模拟情景: 在linux1 操作后,会生成yyyymmdd.txt 和 yyyymmdd文件夹(yyyymmdd为年月日格式),每天要将文件夹的内容和.txt手动传输到linux2的路径上。
需求:要定时进行数据文件迁移,但两台linux网络不通,因此要将windows作为数据文件转存的中抓站。即先将linux1的文件夹与.txt传到windows,再从windows发送.txt和文件夹到linux2,需要编写脚本并定时执行。
思路:
1.利用pscp 传输文件和pscp命令的特性(支持一条命令完成文件传送、免交互密码登录)。
2.写两个pscp脚本,一个脚本负责将linux1文件传到windows,另一个脚本负责将windows的文件传到linux2指定路径上。
3.由于文件名每天会变,需要在脚本设定变量获取时间。同时利用crontab定时在linux2创建yyyymmdd的文件夹
4.加入windows任务计划程序,设定操作和触发器实现定时备份,迁移数据文件。
实际场景:在56机子里运行一个assetID.sh后,会在本地生成一个yyyymmdd(年月日文件夹,和一个.txt文件,文件夹是每天数据库更新后的
下载链接:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
下载pscp.exe文件,并将其存放入C:\Windows\System32文件夹下,然后在windows命令框中输入命令: pscp.exe
出现以下图片说明安装成功。
daowin.bat(传到windows的脚本)
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" echo %ymd% f: cd F:\YUAN\beifen\ceshi md %ymd% pscp.exe -pw "123456" -P 端口 -r [email protected]:/root/%ymd%.txt F:\YUAN\beifen\ceshi\ pscp.exe -pw "123456" -P 端口 -r [email protected]:/root/%ymd%/* F:\YUAN\beifen\ceshi\%ymd%\ pscp.exe -pw "123456" -P 端口 -r [email protected]:/root/%ymd%.txt F:\YUAN\beifen\ceshi\ cmd |
daolin.bat(传到linux的脚本)
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" echo %ymd% pscp.exe -pw "123456@" -P 端口 -r F:\YUAN\beifen\ceshi\%ymd%.txt [email protected]:/home/yuan/%ymd%/ pscp.exe -pw "123456@" -P 端口 -r F:\YUAN\beifen\ceshi\%ymd%\* [email protected]:/home/yuan/%ymd%/ pscp.exe -pw "123456@" -P 端口 -r F:\YUAN\beifen\ceshi\%ymd%.txt [email protected]:/home/yuan/%ymd%/ cmd |
备注:
传送文件夹要加参数 -r
-pw 密码,用指定的密码登录空间 -P 端口
路径根据实际情况修改,注意存放路径后需要加“/”
要在linux2 先创建一个yyyymmdd文件夹,利用crontab实现
文末的cmd是让窗口停留,让人员检查状态
因为pscp是传文件用的,在daolin.bat中指定文件夹为yyyymmdd.
但是直接将文件夹整个传送到linux2,会报找不到文件夹的错误,因此需要利用crontab执行一个时间脚本定期创建文件夹
1.安装crontab
yum install vixie-cron –y
yum install crontabs –y
2.启动crontab
service crond start #开启crontab
service crond status #查看状态
chkconfig crond on //设置开机自动启动crond服务:
拓展:其他命令
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
3.创建yyyymmdd的脚本
vim date.sh
#!/bin/bash a=`date +%Y%m%d` cd /home/yuan echo $a mkdir $a chmod 777 $a #增加文件夹读写权限
|
4.执行脚本
执行的脚本:(两种)
1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务
crontab -l //列出当前的所有调度任务
crontab -l -u jp //列出用户jp的所有调度任务
crontab -r //删除所有任务调度工作
2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
这里选择第一种方法
输入crontab -e
00 08 * * * sh /path/to/date.sh 每天8时执行脚本
打开控制面板-管理工具-任务计划程序,选择创建任务
注意:需要创建两个任务,一个拉取文件,一个发送文件
【常规】-为任务进行命名
【触发器】,设置定时操作
【操作】-选择执行脚本,点击选择,找到bat所在路径
这样便可完成定时从linux1 备份文件到windows,再由windows发送文件到linux2 中。任务执行的间隔需要几分钟。
set “Ymd” 表示设置一个名称为”Ymd”变量,获取系统时间
echo 20190822 表示当前年月日
第一个运行结果Connection timed out 原因未明,但不影响文件传送。
其他表示文件传送的结果显示
PS:容易出现的问题
1.连接失败。
解决:cat /etc/ssh/sshd_config 查看远程端口 ,还有检查账号密码有无输错。
2.Unable to open file.Permittion denied.
解决:输入ll 查看权限,chmod 777 文件夹名字 增加权限。