Bash 스크립트 sftp는 스크립트가 있는 동일한 디렉토리에만 파일을 다운로드합니다.

Bash 스크립트 sftp는 스크립트가 있는 동일한 디렉토리에만 파일을 다운로드합니다.

이상한 문제가 있습니다. FTP 서버에서 내 bash 스크립트가 실행 중인 디렉터리가 아닌 다른 디렉터리로 파일을 다운로드하려고 합니다. 수동으로 하면 모든 것이 잘 작동합니다. 유형을 연결할 수 있나요

get sampleFile.csv /path/to/directory/

이것을 bash 스크립트에 넣으려고 하면 작동하지 않습니다. 수동으로 수행하는 것과 동일한 출력을 얻습니다.

/ftp/sampleFile.csv 100%  384     0.4KB/s   00:01

하지만 파일은 디렉토리나 서버에서 찾을 수 있는 어디에도 없습니다. 나는 열심히 노력했다

sftp ***** << EOF
get sampleFile.csv /path/to/directory/
quit
EOF

그리고

cd /path/to/directory/
sftp ***** << EOF
get sampleFile.csv
quit
EOF    

그리고

sftp ***** << EOF
lcd /path/to/directory
get sampleFile.csv
quit
EOF    

이 모든 작업은 수동으로 수행됩니다.

작동하는 유일한 것은

sftp ***** << EOF
get sampleFile.csv
quit
EOF 

그러면 파일이 bash 스크립트와 동일한 디렉터리에 배치되어 표시됩니다. 어떤 아이디어가 있나요?

답변1

sftp 스크립트 행 lcd path/you/want/to/save/to앞에 추가하십시오 .get

 ❯ sftp localhost
Connected to localhost.
# can't get sampleFile.csv because lpwd isn't what I think
sftp> get sampleFile.csv path/to/directory
File "/home/ryan/sampleFile.csv" not found.
sftp> lpwd
Local working directory: /home/ryan
# this will grab the file I want, but save it into `lpwd` again
sftp> get path/to/directory/sampleFile.csv
Fetching /home/ryan/path/to/directory/sampleFile.csv to sampleFile.csv
# pretend I want to save it locally in /tmp... so: lcd /tmp
sftp> lcd /tmp
sftp> get path/to/directory/sampleFile.csv
Fetching /home/ryan/path/to/directory/sampleFile.csv to sampleFile.csv

관련 정보