我几乎整天都试图找到解决这个问题的方法,到处搜索,搜索这个论坛几个小时,但我无法找出问题所在。我必须每小时解析应用程序日志文件,然后将每小时文件(包含大约 100,00 行)传输到 remore 服务器以进行数据库上传。出于安全原因,FTP 的使用被阻止,所以我通过 sftp 使用 lftp 进行文件传输,因为脚本将从 cron 运行。
问题是通过PUT/MPUT命令上传文件时 sftp 抛出错误“ put: '/home/applogs/ACCESS/access_log*: No such file or directory ”。我正在使用“*”,以便传输名称为access_log的任何文件。如果我输入完整的文件名(即;access_log_10-06-2013_15_53_46.txt),那么脚本可以完美运行,但是如果我使用“ access_log* ”,那么系统就找不到文件了!!!我尝试了 PUT 和 MPUT。
如果有人可以提供帮助,那将是一个很大的帮助。以下是我的文件传输部分代码:
#!/bin/bash
IP=**********
USER=********
PASS=********
SRC='/home/applogs/ACCESS/'
DST='/home/db/INPUT/'
###### get system time ######
EXECU_TIME=`date '+%d-%m-%Y_%H_%M_%S'`
###### Rename file with system timestamp ######
mv access_log* access_log_$EXECU_TIME.txt
###### Change file permission ######
chmod 774 access_log_$EXECU_TIME.txt
##### Start file transfer
lftp -u ${USER},${PASS} sftp://${IP}<<EOF>lftplog.txt
cd ${DST}
lcd ${SRC}
set net:timeout 30
set ftp:ssl-allow no
put access_log*
quit
EOF
源系统信息:GNU Linux 2.6.9-55
目的地系统信息:GNU Linux 2.6.39-200.24.1