2012-04-10 11 views
37

私はput -r directory/*を試しましたが、これはファイルだけをアップロードし、フォルダはアップロードしませんでした。私にエラーを与えた、Couldn't canonicaliseできません。linux上でsftpを使って、フォルダ全体をアップロードするにはどうしたらいいですか?

ご協力いただければ幸いです。

+3

スラッシュとアスタリスクなし "ディレクトリを置く" 試してみてください。 –

+0

https://stackoverflow.com/questions/10084941/how-can-i-upload-an-entire-folder-that-c​​ontains-other-folders-using-sftp-on-li/44197588#44197588 –

答えて

25

Herescpを使用してディレクトリをコピーする方法について詳しく説明しています。これは、リモートホストのディレクトリ「バー」にローカルホストからディレクトリ「foo」をコピーします

$ scp -r foo [email protected]:/some/remote/directory/bar 

:あなたのケースでは、それはようなものになるだろう。 -rは、ディレクトリ全体を再帰的にコピーします。

同様の構文でrcpを使用することもできます。それらの唯一の違いは、scpがセキュアシェルを使用し、rcpがリモートシェルを使用することです。

BTW sftpサーバがコマンドに記載されているファイル/ディレクトリにアクセスできない場合は、「カノニカル化できませんでした」というエラーが表示されます。

更新putを具体的に使用したいユーザーは、Ben Thielkerの回答を参照してください。

(代わりにSFTP以外のものを使用するように言われての)実際にこの質問に直接答えを望む人々のため
+0

ターゲットがSSTPのみでSFTPをサポートしている場合、これは機能しません。 – Teekin

-6

代わりにscpを使用してください。 SSHも使用されており、簡単に再帰を処理できます。

+3

「scp」確かに優れていますが、すべての 'sftp'サーバが' scp'接続をサポートしているわけではないので、 'sftp'自体が時々必要です。 –

+0

現時点では、私はsftpをサポートしていてもscpをサポートしていないC++コードベースにいるので、これは私にとってはうまくいきません。 scpは必ずしも答えではありません。 – PThomasCS

151

...

put -r local/path/to/directoryName 

アップロードディレクトリはすでに、サーバ上の作業ディレクトリに存在している必要があります最初に作成する必要があるかもしれません。

mkdir directoryName 
+32

これは受け入れられる回答である必要があります。 –

+3

put -r somefileを実行しようとすると「無効なフラグ-r」が表示されます –

+3

ありがとうございます。 – Nightwolf

0
sftp> mkdir source 
sftp> put -r source 
Uploading source/ to /home/myself/source 
Entering source/ 
source/file1 
source/file2 

enter image description here

関連する問題