sftp를 사용하여 비슷한 이름의 여러 파일에서 단일 파일을 추출하고 싶습니다.
예를 들어. 내 원격 서버에 다음 파일이 있는 경우
file_0722_005.dat
file_0722_020.dat
file_0722_033.dat
file_0722_0022.dat
그 중 아무거나 뽑아보고 싶습니다.
유닉스에서는 갈 수 있어요
ls file_0722_*|head -1
하지만 SFTP에서는 머리/꼬리가 작동하지 않습니다.
이 작업을 수행하는 방법을 제안하십시오!
답변1
SSHFS로컬 컴퓨터에 원격 파일 시스템을 마운트할 수 있습니다. SFTP를 통신 프로토콜로 사용하므로 서버에서 SFTP를 허용하는 경우 SSHFS를 사용할 수 있습니다. 클라이언트 시스템이 다음을 지원해야 합니다.퓨즈이는 Linux, OSX, *BSD 및 Solaris를 포함한 대부분의 최신 Unix 변형에 해당됩니다.
mkdir myserver
sshfs [email protected]:/path/to/directory myserver
cd myserver
set file_0722_*
cp "$1" /local/directory
fusermount -u myserver
답변2
다른 클라이언트를 만날 수도 있습니다.
lftp
예를 들어 lftp sftp://user@host/dir
:
glob eval -f 'get "$0"' file_0722_*
그러나 파일 이름에 백슬래시, 큰따옴표 또는 줄 바꿈이 포함될 수 있는 경우에는 사용할 수 없습니다. 파일 이름을 제어할 수 없으면 명령 주입 취약점이 됩니다(예: 이름이 지정된 파일을 사용하면 file_0722_";!reboot"
해당 명령을 실행할 수 있습니다 reboot
).