답변:
sftp
기능이 제한되어 있습니다. 그럼에도 불구하고이 get
명령에는 트릭을 수행 할 수있는 옵션이 있습니다. get -a
부분 다운로드를 완료하므로 파일이 클라이언트에 이미 있고 서버에있는 파일보다 크면 다운로드되지 않습니다. 파일이 있지만 짧으면 파일의 끝이 전송되므로 로컬 파일이 다운로드가 중단 된 제품인 경우에 적합합니다.
SFTP보다 복잡한 작업을 수행하는 가장 쉬운 방법은 SSHFS 를 사용하는 것 입니다. SSHFS는 SFTP를 사용하여 원격 파일 시스템을 로컬 파일 시스템으로 표시하는 파일 시스템입니다. 클라이언트에서 SSHFS에는 대부분의 최신 유니스에서 사용할 수있는 FUSE 가 필요합니다 . 서버에서 SSHFS에는 SFTP가 필요합니다. 서버가 SFTP를 허용하면 SSHFS를 사용할 수 있습니다.
mkdir server
sshfs server.example.com:/ server
rsync -a server/remote/path /local/path/
fusermount -u server
SSHFS를 통한 rsync는 원격 측에서 부분 체크섬을 계산할 수 없기 때문에 델타 전송 알고리즘을 이용할 수 없습니다. 일회성 다운로드와는 관련이 없지만 수정 된 파일을 동기화하는 경우 낭비입니다. 수정 된 파일을 효율적으로 동기화 rsync -a server:/remote/path /local/path/
하려면을 사용 하지만 SFTP 액세스뿐만 아니라 SSH 셸 액세스가 필요합니다. 쉘 액세스는 rsync 명령으로 제한 될 수 있습니다.
명령에 -a
플래그를 사용할 수 있습니다 get
.
$ sftp example.com
sftp> get -a hello.txt
*
전체 디렉토리를 다운로드하도록 지정할 수 있습니다 .
그러나 몇 가지주의 사항이 있습니다.
더 나은 옵션은 다음을 사용하는 것입니다 rsync
.
rsync example.com:hello.txt
이렇게하면 항상 파일이 서버에있는 것처럼 제공되므로 로컬 사본과 원격 사본의 차이점이 다른 경우에만 전송되며 보편적으로 사용 가능합니다.