0

scp を動作させるように説得することはできないようです。

テストデータ用

ubuntu@domU-12-31-38-00-D4-F1:/tmp$ find /tmp/a1/
/tmp/a1/
/tmp/a1/a2
/tmp/a1/a2/a3

コマンド発行時

ubuntu@domU-12-31-38-00-D4-F1:/tmp$ scp -r /tmp/a1 domU-12-31-38-00-E2-52.compute-1.internal:/tmp/a1

ディレクトリ /tmp/a1 がターゲット ホストに存在するかどうかに関係なく、domU-12-31-38-00-E2-52.compute-1.internal に同じディレクトリ構造が作成されることを期待します。代わりに、scp が実際に作成するのは次の構造です (ターゲット ホストに /tmp/a1 が存在する場合)。

ubuntu@domU-12-31-38-00-D4-F1:/tmp$ ssh domU-12-31-38-00-E2-52.compute-1.internal find /tmp/a1 
/tmp/a1
/tmp/a1/a1
/tmp/a1/a1/a2
/tmp/a1/a1/a2/a3

操作のルートとして特定のディレクトリに scp を強制的にコピーするにはどうすればよいですか?

後で、この操作をスクリプト化して、マスター上の特定のディレクトリ パスを、同じディレクトリ構造をすべてのスレーブに複製するスクリプトを呼び出すことができるようにします。rsync の動作 (少なくとも私がテストしたものから) は、この方法と同じであることに注意してください。

ありがとう、マキシム。

4

2 に答える 2

2

scpの動作を模倣していますcp。これは、ターゲット ディレクトリにコピーすることです (存在する場合)。/tmpではなくにコピーするだけ/tmp/a1です。

于 2010-07-31T19:19:35.290 に答える
0

$ scp -r /tmp/a1 これ を使用する代わりに、 これ$ scp -r /tmp/a1/* は /tmp/a1 の下のすべてのファイルをコピーするため、宛先の結果の構造は /tmp/a1/a2/a3 になります。または、ターゲット ディレクトリを単に「/tmp/」にすることをお勧めします。 、「/tmp/a1/」ではなく、どちらの方法でも機能します。rsync については、いいえ、同じではありません。rsync とは、または**this/**を意味**this/**します。末尾のスラッシュは、フォルダーの内容をコピーすることを意味します。末尾のスラッシュを offのままにしておくと、[再帰的な場合] ディレクトリ自体がコピーされます。scpcp[this/]

これがお役に立てば幸いです。:) マット

于 2011-04-04T19:00:11.427 に答える