web-dev-qa-db-ja.com

scpはターゲットフォルダーが存在しない場合に作成しますか

ターゲットサーバーがリモートサーバー上に存在しない場合、scpがターゲットフォルダーを作成するかどうか疑問に思います。たとえば、これは機能しますか?

scp -r /data/install/somefolder [email protected]:/data/install/somefolder

ここでフォルダー/data/install/somefolderはFTPサーバー上に存在しないため、このコマンドで作成できますか?

N.B. rsyncについて読んだことがありますが、rsyncの仕組みや使用方法はまだよくわかりません。

31
Benoit Paquette

(rsyncの代わりに)sshとscpでタスクを達成するには:

溶液

2つのステップに分けましょう。

1.欠落している場合はディレクトリを作成します。

ssh [email protected] "mkdir -p /data/install/somefolder"

2.それにコピーします:

scp -r /data/install/somefolder [email protected]:/data/install/somefolder

それらをまとめる

server="[email protected]"
destiny="/data/install/somefolder"
src="/data/install/somefolder"
ssh "$server" "mkdir -p $destiny" && scp -r "$src" "$server:$destiny"
42
Thamme Gowda

短い答え:いいえ。

...しかし、rsyncはそうです。そのため、ボックスのrsync -Pravdtze sshにscpをエイリアスしています。はい、それは多くのスイッチであり、これらを組み合わせることで、私の好みのrsync動作を生成します。 rsyncは非常に広範なスイッチとオプションのセットを提供しているため、ニーズに最適なものを確認するためにいくつかの調査を行うことをお勧めします。マンページは開始するのに適した場所ですが、簡単に入手できる多くの情報があります。 例のまともなリスト です。

Edit:実際、あなたが投稿した特定のケースでは、フォルダーが作成されます。それがコピーしているフォルダーです。ただし、user@remotehost:somenonexistentfolder/somefolderにコピーしようとすると失敗します。

21
Jarmund