我几乎整天都试图找到解决这个问题的方法,到处搜索,在这个论坛上花了好几个小时,但我无法找出问题所在。我必须每小时解析应用程序日志文件,然后将每小时文件(包含大约100,00行)传输到remore服务器以进行数据库上载。出于安全原因阻止使用FTP,所以我通过sftp使用lftp进行文件传输,因为脚本将从cron运行。
通过 PUT / MPUT 命令上传文件时出现问题sftp抛出错误“ put:'/ home / applogs / ACCESS / access_log *:没有这样的文件或目录“。我正在使用“*”,以便传输任何名为 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
答案 0 :(得分:2)
尝试mput access_log*
你需要告诉lftp不要求确认mput:
lftp -i -u ${USER},${PASS} sftp://${IP}<<EOF>lftplog.txt
cd ${DST}
lcd ${SRC}
set net:timeout 30
set ftp:ssl-allow no
mput access_log*
quit
EOF
我希望你只有一个access_log。*文件来“放”