SFTP에 변수를 전달하는 방법은 무엇입니까?

SFTP에 변수를 전달하는 방법은 무엇입니까?

기본적으로 타임스탬프인 SFTP 연결 중에 파일 이름을 문자열과 일치시키려고 합니다.

파일 이름의 일부를 일치시키는 방법은 무엇입니까? SFTP 연결에서 변수를 선언할 수 없는 것 같습니다. 또한 Bash에서 이전에 생성된 변수를 호출할 수도 없습니다.

편집: 내가 시도한 것

yr=$(date + "%Y")
sftp -i key.pem un@server
sftp> echo $yr
Invalid command.
sftp> $yr
Invalid command.

새 케이스

sftp -i key.pem un@server
sftp> test=$(date +"%Y")
Invalid command.

그 2개를 시험해봤어

답변1

프로그램은 sftp그 자체로 완전히 독립적이며 bash, 변수의 값을 알고 확장됩니다 $yr. 일반적으로 애플리케이션별 통신 방법 없이는 bash 변수를 외부 프로그램에 전달할 수 없습니다.

$yr파일 이름에 포함된 파일만 업로드하거나 다운로드하려면 scp다음과 같은 방법을 사용할 수 있습니다.

yr=$(date +%Y)
scp -i key.pem un@server:/some/long/path/that/includes/$yr .

다운로드를 위해 또는

scp -i key.pem some_local_file un@server:/some/long/$yr/path

업로드용.

어떤 이유로든 sftp독점적으로 사용해야 하는 경우 즉시 배치 파일을 만들 수 있습니다.

sftp -i key.pem -b - un@server <<< "get /some/path/with/$yr"

답변2

sftp쉘의 일부가 아닌 독립적인 프로그램입니다. 쉘 구문을 이해하지 못합니다. 변수 확장, 조건문 등의 기능은 없습니다.

SFTP를 통해 복잡한 작업을 수행하는 가장 쉬운 방법은 다음을 사용하는 것입니다.SSHFS. SSHFS는 SFTP를 사용하여 원격 파일 시스템을 로컬 파일 시스템으로 표시하는 파일 시스템입니다. 클라이언트 측에서 SSHFS에는 다음이 필요합니다.퓨즈, 대부분의 최신 unice에서 사용할 수 있습니다. 서버에서 SSHFS에는 SFTP가 필요합니다. 서버가 SFTP를 허용하는 경우 SSHFS를 사용할 수 있습니다.

mkdir server
sshfs -o IdentityFile=key.pem un@server: server
cp "server/dir/myfile-$(date +%Y).txt" /local/path
fusermount -u server

관련 정보