1

我几乎整天都试图找到解决这个问题的方法,到处搜索,搜索这个论坛几个小时,但我无法找出问题所在。我必须每小时解析应用程序日志文件,然后将每小时文件(包含大约 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

4

1 回答 1

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.* 文件可以“放置”

于 2013-06-10T19:31:23.263 回答