通过sftp lftp,上传时找不到文件错误

时间:2013-06-10 11:48:17

标签: linux unix sftp lftp

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

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。*文件来“放”