sftp-대상 폴더에 존재하지 않는 폴더에서만 파일을 복사하는 방법


19

get파일이 가능한지 궁금 sftp하지만 대상 폴더에 이미 존재하는 파일을 다시 다운로드하지 못하게합니까?

답변:


20

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 명령으로 제한 될 수 있습니다.


7

명령에 -a플래그를 사용할 수 있습니다 get.

$ sftp example.com
sftp> get -a hello.txt

*전체 디렉토리를 다운로드하도록 지정할 수 있습니다 .

그러나 몇 가지주의 사항이 있습니다.

  • OS X에서는 작동하지 않으며 다른 시스템에서는 작동하지 않을 수 있습니다. 우분투 15.04에서 테스트했습니다.
  • 이 옵션은 중단 된 다운로드를 재개하기위한 것입니다. 파일이 변경되면 결과가 손상된 다운로드가됩니다.

더 나은 옵션은 다음을 사용하는 것입니다 rsync.

rsync example.com:hello.txt

이렇게하면 항상 파일이 서버에있는 것처럼 제공되므로 로컬 사본과 원격 사본의 차이점이 다른 경우에만 전송되며 보편적으로 사용 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.