ディレクトリが存在しない場合、scpはディレクトリを作成できますか?

ディレクトリが存在しない場合、scpはディレクトリを作成できますか?

ファイルをアップロードするのに使用したいのですが、scpターゲットディレクトリが存在しない場合があります。

フォルダを自動的に作成できますか?それでは、どうすればいいですか?そうでなければ、どのような代替案を試すことができますか?

ベストアンサー1

それは多くのことの一つです。rsyncできる

rsync過去数年間にリリースされたバージョンを使用している場合、デフォルトのコマンド構文は次のようになりますscp

$ rsync -r local-dir remote-machine:path

これにより、local-sourceコンテンツが$HOME/path/local-dirリモートシステムにコピーされ、必要なディレクトリが作成されます。

rsync実際、これがあなたの特定の状況に適用されるかどうかに影響を与える可能性があるいくつかの制限があります。たとえば、欠落しているリモートディレクトリの複数のレベルを作成するのではなく、リモートに最大1つの欠落レベルのみを作成します。rsyncコマンドの前に次の内容を追加すると、この問題を簡単に解決できます。

$ ssh remote-host 'mkdir -p foo/bar/qux'

$HOME/foo/bar/quxツリーが存在しない場合、ツリーが作成されます。文句を言わず、悪いことをしないでしょう。するすでに存在しています。

rsync時には他にも驚くべき行動があります。基本的には、コピーしたいコンテンツを特定するように求めることであり、推測が仮定と一致しない可能性があります。一度試して確認してみてください。期待どおりに機能せず、理由を理解できない場合は、ローカルおよびリモートディレクトリの設定に関する詳細を公開し、試したコマンドを入力してください。


脚注:

  1. rsync2.6.0(2004年1月1日)以前は、このフラグはデフォルトで廃止されたため、-e sshこのように動作する必要がありました。scpRSHプロトコル

  2. scp一部のロゴを共有しますrsyncが、少しだけ重なる場合もあります。

  3. SSH転送プロトコルとして使用される場合は、rsync同じデフォルト値が使用されます。したがって、同様に、scpローカルユーザーと同じ名前のユーザーがリモートシステムにあると仮定します。

おすすめ記事