利用PSCP实现linux-windows定时文件互传

数据迁移自动化脚本部署说明

场景分析

任务:完成数据迁移自动化脚本的部署,并形成说明文档。

模拟情景: 在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文件,文件夹是每天数据库更新后的

一 下载pscp.exe

 

下载链接:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

 

利用PSCP实现linux-windows定时文件互传_第1张图片

 

下载pscp.exe文件,并将其存放入C:\Windows\System32文件夹下,然后在windows命令框中输入命令: pscp.exe

出现以下图片说明安装成功。

利用PSCP实现linux-windows定时文件互传_第2张图片

 

 

 

二 编写两个脚本

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是让窗口停留,让人员检查状态

         

 

 

 

 

三 利用crontab命令定时在linux2创建空白文件夹

 

因为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时执行脚本           

 

四 设置两个定时任务

打开控制面板-管理工具-任务计划程序,选择创建任务

注意:需要创建两个任务,一个拉取文件,一个发送文件

 

利用PSCP实现linux-windows定时文件互传_第3张图片

【常规】-为任务进行命名

利用PSCP实现linux-windows定时文件互传_第4张图片

 

【触发器】,设置定时操作

利用PSCP实现linux-windows定时文件互传_第5张图片

 

【操作】-选择执行脚本,点击选择,找到bat所在路径

利用PSCP实现linux-windows定时文件互传_第6张图片

 

 

 

 

这样便可完成定时从linux1 备份文件到windows,再由windows发送文件到linux2 中。任务执行的间隔需要几分钟。

 

五 状态检查

利用PSCP实现linux-windows定时文件互传_第7张图片

set “Ymd” 表示设置一个名称为”Ymd”变量,获取系统时间

echo 20190822  表示当前年月日

 

 

第一个运行结果Connection timed out 原因未明,但不影响文件传送。

 

其他表示文件传送的结果显示

利用PSCP实现linux-windows定时文件互传_第8张图片

PS:容易出现的问题

1.连接失败。

解决:cat /etc/ssh/sshd_config 查看远程端口 ,还有检查账号密码有无输错。

2.Unable to open file.Permittion denied.

解决:输入ll 查看权限,chmod 777 文件夹名字  增加权限。

你可能感兴趣的:(系统运维,数据自动迁移,定时数据更新)