web-dev-qa-db-ja.com

Linuxでsftpを使用して、他のフォルダーを含むフォルダー全体をアップロードするにはどうすればよいですか?

私が試してみました put -r directory/*、ファイルのみをアップロードし、フォルダーはアップロードしません。エラーを出してくれた、Couldn't canonicalise

どんな助けも大歓迎です。

46
Chris

ここscpを使用してディレクトリをコピーする方法として詳細な説明を見つけることができます。あなたの場合、それは次のようなものです:

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

これにより、ディレクトリ「foo」がローカルホストからリモートホストのディレクトリ「bar」にコピーされます。ここに -rは、ディレクトリ全体を再帰的にコピーします。

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

[〜#〜] btw [〜#〜]言及した「Could n't canonicalise」エラーは、sftpサーバーがファイルにアクセスできない場合に表示されます/コマンドに記載されているディレクトリ。

[〜#〜] update [〜#〜]putを具体的に使用したいユーザーについては、Ben Thielkerの回答を参照してください。ここに。

25
Eugene S

(sftp以外のものを使用するように言われる代わりに)この質問に対する直接的な回答を実際に望んでいる人のために...

put -r local/path/to/directoryName

アップロードされたディレクトリは、サーバーの作業ディレクトリに既に存在している必要があるため、最初に作成する必要があります。

mkdir directoryName
197
Ben Thielker
sftp> mkdir source
sftp> put -r source
 Uploading source/ to /home/myself/source
 Entering source/
 source/file1
 source/file2

enter image description here