web-dev-qa-db-ja.com

sftpを使用してディレクトリとそのすべてのコンテンツを取得するにはどうすればよいですか?

Sftpからgetコマンドを使用しようとすると、通常のファイルではないというエラーが表示されます。これを回避する方法はありますか?

5
Paul

sftp -rを使用してホストに接続し、次にgetを使用してディレクトリに接続できます。接続時に-rを使用し忘れた場合は、get -rを使用できます。

sftp -r me@somehost

または

sftp> get -r tmp/
Fetching /home/me/tmp/ to tmp
Retrieving /home/me/tmp
/home/me/new.orig.dmp            100%  417KB 416.8KB/s   00:00    
/home/me/untangle.dmp        100%  398KB 398.3KB/s   00:00    
/home/me/repos.orig.dmp          100%  415KB 415.2KB/s   00:00    
/home/me/me-untangle.dmp 100%   32KB  32.4KB/s   00:00    
sftp>

常に-rsftpに渡すようにしたい場合は、~/.bashrcまたは同様のものにエイリアスとして追加します。

alias sftp="sftp -r"

man 1 sftpから

 -r      Recursively copy entire directories when uploading and download‐
         ing.  Note that sftp does not follow symbolic links encountered
         in the tree traversal.
         .........

 get [-Ppr] remote-path [local-path]
         ........
         If either the -P or -p flag is specified, then full file permis‐
         sions and access times are copied too.
         If the -r flag is specified then directories will be copied
         recursively.  Note that sftp does not follow symbolic links when
         performing recursive transfers.
17
George M