2015-01-27 7 views
0

을 SFTP하는 로컬 폴더에서 단지 몇 개의 파일을 이동 *. 그러나 실행될 때마다 거의 파일 만 이동하지 않습니다. 모든 파일이 아닙니다.넣어 *. 내 배치 작업을위한 쉘 스크립트를 사용하여 SFTP 폴더에 폴더에서 모든 파일을 이동하려고

/usr/local/bin/expect -c "spawn sftp -o Identityfile="/export/home/user/.ssh/example.ppk" [email protected]$SFTP_SERVER 
expect \"password: \" 
send \"$PASSWORD\n\" 
expect \"sftp> \" 
send \"cd $DESTDIR\r\" 
expect \"sftp> \" 
send \"lcd $LOCALDIR\r\" 
expect \"sftp> \" 
send \"put *.* \r \" 
expect \"sftp> \" 
send \"quit\r\" 
expect \"sftp> \"" >> $BATCH_DIR/logs/batch"$todaydatetime".log 

이 스크립트는 매번 성공적으로 실행되지만 SFTP 대상 폴더로 몇 개의 파일 만 이동됩니다. 로그에서 나는 항상 단지 19 파일이 SFTP 폴더 (때마다 동일한 파일)에 로컬 폴더에서 업로드 볼 ​​수 있습니다. 나는 왜 모든 파일이 같은지 알지만 왜 파일이 ​​몇 개 밖에없는 지 이해할 수 없다.

SFTP 명령이 활성화 될 것으로 시간에 어떤 제한이 있습니까? 난 단지 새 파일을 취하도록 명령을 변경하는 방법을

친절 또한 나에게 도움이됩니다. "rsynch"가 작동하지 않습니다.

안녕 kenster은 MPUT 나를 위해 작동하지 않았다. 전송 된 파일은 숫자로 시작되는 로컬 폴더의 파일입니다. 내 로컬 폴더에는 파일 이름에 공백이 있거나 심지어 파일 확장자가 pdf 또는 xls이거나 항상 같은 19 개의 파일이 전송되는 경우에도 번호로 시작하는 19 개의 파일이 전송되는 236 개의 파일이 있습니다. 알파벳으로 시작하는 단일 파일이 전송됩니다. 나는 파일 이름/권한이 어떤 문제를 일으키는하지만 수동으로 잘 작동 여부를 확인하기 위해 수동으로 동일한 단계를 시도 :. (모든 파일이 전송됩니다

미안 얘들 아 내 실수

난 그냥 LCD 단계 이후 라인 아래에 추가

. . 지금은 단지 6 파일이 전송됩니다. 는 \ "SFTP> \" 보내기 \ 기대 "재편은 -ltr \ r은 \"

문제가되지 명령 또는 파일 이름이 뭔가 다른 것 같습니다.

내가 date '+%Y%m%d%H%M%S' 에코 모든 단계의 시작과 끝. 몇 초가 걸릴 것입니다. 제한된 환경에서 일하고 있습니다. 고마워. 그러나 여전히 새로운 파일 만 선택하는 방법을 도울 수 있습니다. 오래된 파일을 백업 폴더로 이동하는 것은 상사가 허용하지 않습니다.

+0

제한이 없습니다. verbose 모드 ('sftp -v -v -v')로 명령 줄에서 테스트를 실행하고 질문에 대한 명령 출력을 포함 할 수 있습니까? –

+0

@ mark-setchell의 대답으로 문제가 해결되지 않으면 질문을 편집하여 전송중인 파일 이름의 예와 그렇지 않은 파일의 예를 포함 할 수 있습니까? – Kenster

+0

설명이 아닌 구체적인 예를 들어주십시오. –

답변

0

당신은 SSHFS를 사용하여 시도하고 당신에게 더 많은 옵션을 제공해야하며, 일반 파일 시스템처럼 어떤 행동해야 CP와 같은 "일반"명령을 사용할 수 있습니다.

sshfs [email protected]$SFTP_SERVER: /temporary/mount/path 
cp -R $LOCALDIR/* /temporary/mount/path/$DESTDIR 
fusermount -u /temporary/mount/path/ 
+0

안녕하세요 @noreabu : sshfs도 사용할 수 없습니다. 새 라이브러리를 설치할 수 없습니다. 내 대본에 문제가 있다고 생각하십니까?왜냐하면 내가 수동으로 동일한 단계를 실행하면 어떤 문제에도 직면하지 않기 때문입니다. 모든 파일이 이동됩니다. – jack

1

변경 라인 :

send \"put *.* \r \" 

PUT *.*

send \"mput * \r \" 

에 못생긴 윈도우주의입니다.

당신은 또한이 공백을 포함 할 경우 $DESTDIR$LOCALDIR 주위에 따옴표를 넣어 고려해야한다.

+0

안녕하세요 @ 마크 : 나는 이미 언급 한 것과 같은 mput을 시도 .. 그 또한 같은 방식으로 행동합니다. 내 대상 디렉토리는/sftpvc/user/pro/att이고 로컬 directoy는/app/weblogic/user/attachments입니다. – jack

+0

미리 'PROMPT OFF'를 보내야 할 수도 있습니다. –

+0

스크립트를 사용하는 대신 터미널에서 똑같은 명령을 입력하면 어떻게됩니까? –