나는이 문제를 거의 하루 종일 풀려고 시도해 봤지만 모든 곳에서 인터넷 검색을하고이 포럼을 몇 시간 동안 열었지만 아직 문제가있는 곳을 발견하지 못했습니다. 매 시간마다 응용 프로그램 로그 파일을 구문 분석하고 데이터베이스 업로드를 위해 원격 서버에 시간당 파일 (약 100,00 줄 포함)을 전송해야합니다. FTP의 사용은 스크립트가 cron에서 실행되므로 파일 전송을 위해 sftp를 통해 lftp를 사용하므로 보안상의 이유로 차단됩니다.SFTP를 통해 lftp를 업로드하는 동안 파일을 찾을 수 없습니다.
문제는 PUT/MPUT 명령 SFTP로 파일을 업로드하는 동안없는 오류 발생 "넣어 : '/ 홈/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 리눅스 대상의 2.6.9-55
시스템 정보 : GNU 리눅스 2.6.39-200.24 아래는 파일 전송 부분에 대한 내 코드입니다. 나는 희망
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
: 1
그냥 SRC 디렉토리에 파일이 있습니다. 그 점에 대해서는 의심의 여지가 없습니다. – Yeasir