14

私のUbuntuのコマンドラインsftpには、再帰的なputが実装されていません。私は2004年から-Rオプションスイッチでそのような機能を実装することについていくつかの議論を見つけました。ですから、私はある種の自作の再帰を唯一の選択肢として見ています。

つまり。

  • ディレクトリリストを反復処理します
  • ディレクトリにcd
  • 存在しない場合はmkdir
  • ファイルを置く

私はbashでこれを行うことを計画していますが、他の言語で十分です。

サーバーへのシェルアクセスがないため、Rsyncまたはscpはオプションではありません。sftpのみ。

4

10 に答える 10

16

lftpを見てください。これは、ftp、ftps、http、https、hftp、fish(sshシェル セッションを介したファイル転送)、およびsftpをサポートする強力なファイル転送クライアントです。ftpのようなインタラクティブなインターフェイスを備えていますが、コマンドラインですべてのコマンドを指定することもできます。mput(再帰的ではないがグロブパターンを処理する)コマンドとmirror(貧乏人のrsync)コマンドを見てください。

私はこれを次のようなsftpアップロードのみを処理するサーバーで使用します。

lftp -c "open -u $MYUSER,$MYPASSWORD sftp://$TARGET ; mirror -R $SOME_DIRECTORY"
于 2010-10-11T09:53:34.407 に答える
4

lftpが利用可能であれば最良のオプションだと思いますが、Cent OSの古いインストールに行き詰まり、SFTPのみを介して再帰的にプットする必要がありました。これが私がしたことです:

find dir -type d -exec echo 'mkdir {}' \; | sftp user@host
find dir -type f -exec echo 'put {} {}' \; | sftp user@host

したがって、基本的にすべてのディレクトリが存在することを確認してから、ファイルを送信します。

于 2013-07-12T06:53:47.123 に答える
2

GUI FTPクライアントFileZillaは、SFTPもサポートし、ディレクトリのアップロードとダウンロードもサポートします。

于 2011-06-29T20:04:20.263 に答える
2

私のubuntu12.04put -rはsftpに付属しています

于 2014-05-01T08:13:31.420 に答える
1

コマンドラインでは、 putty-toolsパッケージを使用してこれを行うことができます。と呼ばれるsftpの代替品が付属していpsftpます。

mput -rローカルディレクトリをリモートに再帰的にコピーする方法をサポートします。

于 2013-02-08T16:38:52.713 に答える
0

sshfsはどうですか?

もちろん、と組み合わせcp -rます。

または、それ自体で失敗しrsync -rます。

于 2010-02-26T00:37:10.623 に答える
0

これはbashで実行できると思いますが、多くの作業が必要になります。代わりに、PythonとChilkatライブラリを確認することをお勧めします。

于 2009-10-20T15:47:58.600 に答える
0

Javaでは、市販の製品であるedtFTPj / PROを使用して、SFTP経由で再帰的に転送できます。あるいは、SCPを検討することもできます。これは通常、再帰をサポートし、SSHを介して実行されます。

于 2009-10-21T00:27:08.603 に答える
0

たくさんのグーグルと良い答えの後、私は仕事のために送信同期を使用しました。あまり良い解決策ではありませんが、仕事はします。

于 2010-04-06T14:02:44.577 に答える
0

方法は次のとおりです-

sftp -r  <host>
password:  <pass>

cd <remote dir>     # moves to remote dest dir

put -r localdir/*   # creates dir and copies files over
于 2022-01-30T20:52:05.883 に答える