回答:
sftp
およびのようcp
にscp
、フォルダー(およびその内容は明らかに)をコピーするときに、-r
オプションを使用してフォルダーを再帰的に転送することを明示的に指定する必要があります。
したがって、-r
コマンドに追加します。
-r
にsftp
コマンドに追加します。 sftp -r user@host
Couldn't canonicalise: No such file or directory
。
# sftp user@remote-host
#> get -r remote-folder
私は提案することができます、あなたはを使用しますrsync
。セキュアな接続を介してファイルを移動する場合、これは業界標準です。
rsync -alPvz ./source_dir server.com:destination_dir
それは私が今まで何年も使用してきたものです。
(-a
オプションは、ディレクトリの再帰などを処理します)
-a
=再帰+シンボリックリンク、アクセス許可、変更時間、所有者、グループ、特殊ファイル、およびデバイスファイルを保持します(後者にはスーパーユーザー権限が必要です)。-l
=シンボリックリンクを保持します(既に含まれています-a
)。-P
=転送中に進行状況を表示+部分的に転送されたファイルを保持。-v
=詳細モード(ただし-P
、奇妙な(バグ?)protocol version mismatch
エラーを回避するために使用する場合は必須のようです); -z
=転送されたデータの圧縮を有効にします。
-l
スイッチを使用する必要があるかどうかにかかわらず、バージョンに依存しているようです。古いバージョンはに含ま-l
れていなかったことを覚えています-a
。
場合はrsync
オプションではありません、私は次の推薦しますlftp
:
lftp sftp://user@host.com/path/path/
次に、mirror
次のようにコマンドを使用して再帰的にアップロードします。
mirror -R
(再帰がデフォルトであることに注意してください。これ-R
は逆です —ダウンロードの代わりにミラーコマンドをアップロードします。追加--dry-run
してみて、試してみて、期待どおりに動作することを確認してください。)
または、再帰なしでアップロードするには:
mirror --no-recursion
あなたは持っているcd
ディレクトリにミラーリングしたいです。よく働く!
あなたが実際に「ディレクトリを転送するためにどのようにsftpを使用するのですか」という質問であれば、
sftp -r user@server
ただし、ディレクトリを転送する場合は、ニーズに応じて、2つの優れたオプションを提案できます。 sftp
sshのようなコマンドプロンプトでリモートサーバーにログインする必要がありますが、必要なのがファイルだけである場合は、より簡単で迅速な方法があります。
SCP
一度だけ転送する場合は、アップロードしてみてください:
# upload source directory to remote server
scp -rp source_dir user@server:dest
#download directory from remote server:
scp -rp user@server:source_dir dest
#specifying ssh key:
scp -rp -i ~/.ssh/key user@server:source_dir dest
#remote directory has spaces
scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest
Rsync
ディレクトリを定期的に同期する予定がある場合は、rsyncを使用する方が合理的です。2つのディレクトリ間でデルタを実行し、転送時間とデータをネットワーク経由で節約します。
rsync -r -a -v -e ssh --delete source_dir user@server:dest
以下に、最も一般的なrsyncオプションのリストを示します:(ここから引用)
お役に立てば幸いです!