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

来源:互联网 发布:php 数值转字符串 编辑:程序博客网 时间:2024/06/05 07:49

使用此脚本前提条件:两台机器之间已经建立信任,无需密码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/henow=$(date '+%Y-%m-%d %H:%M:%S')#log folderlog_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_dirmkdir -p $bak_dir#进入ftp对账文件目录cd $folder#统计当前文件夹下对账文件数量,并赋值到fileNumfileNum=$(ls -l |grep "^-"|wc -l)while truedo      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 5doneecho -e '' >> $log_fileecho -e '' >> $log_file


阅读全文
0 0