两台服务之间定时SCP(免密码)自动传输文件脚本

使用此脚本前提条件:两台机器之间已经建立信任,无需密码scp传输文件,设置可参考:解决 shell脚本中SCP命令需要输入密码的问题

脚本内容:

#!/bin/sh

#该脚本使用nohup指令后台运行:nohup sh transfer_files.sh > /home/coswadmin/he/scplog/scp.log 2>&1 &
#查询当前后台执行脚本的pid:ps -ef|grep 'transfer_files.sh'
#停止进程:kill -9 pid

#解决shell脚本中SCP命令需要输入密码的问题:http://blog.csdn.net/chris_playnow/article/details/22579139

#定义变量值
folder=/home/coswadmin/ftp
#scp远程目的目录
remote_folder=/home/cosw/he

now=$(date '+%Y-%m-%d %H:%M:%S')

#log folder
log_dir="/home/coswadmin/he/scplog"
log_file="$log_dir/log_${now}.log"
log_file="$log_dir/scp.log"

#对账文件备份目录
bak_dir='/home/coswadmin/he/checkfile_bak'

#--parents,此选项后,可以是一个路径名称。
#若路径中的某些目录尚不存在,系统将自动建立好那些尚不存在的目录。
#即一次可以建立多个目录。
mkdir -p $log_dir
mkdir -p $bak_dir

#进入ftp对账文件目录
cd $folder

#统计当前文件夹下对账文件数量,并赋值到fileNum
fileNum=$(ls -l |grep "^-"|wc -l)

while true
do
      now=$(date '+%Y-%m-%d %H:%M:%S')
	  fileNum=$(ls -l |grep "^-"|wc -l)
      #如果文件数量大于0,则说明存在对账文件,执行文件移动操作,将文件移动到另一台服务器
      if [ $fileNum -gt 0 ]  
      then   
         #遍历当前文件夹,输出其下文件名,下面移动方式会将文件夹一起进行移动
         for file_a in $folder/*; do 
             echo -e $now' 开始移动对账文件' >> $log_file		 
             temp_file=`basename $file_a` 
             #1、文件名输入到文件		
             echo $temp_file	 >> $log_file	
             #2、文件移动到指定服务器scp,
             scp $temp_file cosw@172.16.66.86:/home/cosw/he_account 
		     #3、文件移动到备份文件夹
		     exec mv $temp_file  $bak_dir &
			 echo -e $now' 对账文件移动结束' >> $log_file  
         done 
      else  
         echo $now' 当前没有需要移动的对账文件' >> $log_file  
      fi
      #休眠1小时 	  
	  sleep 5
done

echo -e '' >> $log_file
echo -e '' >> $log_file








  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值