先说下业务需求,我们需要定时上传昨天产生的统计文件给其他服务器。写一个shell脚本 用crontab定时执行。
重点
1 路径问题 因为是crontab定时执行,所以都是绝对路径。我把脚本放在跟需要上传的文件同级目录下,然后获取当前路径,这样就不会存在找不到路径的问题。
2 脚本开头需要引入环境 source ~/.bash_profile 这句话很重要
3 服务器需先安装lftp 命令 yum -y install lftp
#!/bin/bash
source ~/.bash_profile
#获取当前文件当前路径
positionPath=$(cd "$(dirname "$0")"; pwd)
#获取昨天时间
DATA=`date -d "yesterday" +%Y%m%d`
#需要发送的文件名
#filename="userInfoData.$DATA.*"
filename="*.*.*.gz"
#要发送的主机名
HOST=
USERNAME=
PASSWORD=
startTime=`date "+%Y-%m-%d %H:%M:%S"`
startTimeStamp=`date -d "$startTime" +%s`
basedir=$positionPath
file_regex="*.*.*.gz"
logfile=$basedir/sftp.`date "+%Y%m%d"`.iot
echo "####startTime:$startTime start sftp $filename=======" | tee -a ${logfile}
f