ファイルをアップロードするのに使用したいのですが、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
時には他にも驚くべき行動があります。基本的には、コピーしたいコンテンツを特定するように求めることであり、推測が仮定と一致しない可能性があります。一度試して確認してみてください。期待どおりに機能せず、理由を理解できない場合は、ローカルおよびリモートディレクトリの設定に関する詳細を公開し、試したコマンドを入力してください。
脚注:
rsync
2.6.0(2004年1月1日)以前は、このフラグはデフォルトで廃止されたため、-e ssh
このように動作する必要がありました。scp
RSHプロトコル。scp
一部のロゴを共有しますrsync
が、少しだけ重なる場合もあります。SSH
転送プロトコルとして使用される場合は、rsync
同じデフォルト値が使用されます。したがって、同様に、scp
ローカルユーザーと同じ名前のユーザーがリモートシステムにあると仮定します。