scpコピー方向:ソースとは何ですか?ターゲットは何ですか?

scpコピー方向:ソースとは何ですか?ターゲットは何ですか?

scpのmanの紹介は次のとおりです。

scp [-1246BCpqrv] [-c パスワード] [-F ssh_config] [-i ID ファイル] [-l 制限] [-o ssh_option] [-P ポート] [-S プログラム] [[user@]host1:] file1 。 .. [[ユーザー@]ホスト2:]ファイル2

ソースは何で、ターゲットは何ですか?私はいつもクローンがどの方向に起こるのか疑問に思いました。どのように定義されますか?

ベストアンサー1

Unixコマンドはほぼ常に(非常にいくつかの例外を除いて、ソースはターゲットよりも優先されます。ほとんどの場合、最終目標の前に複数のソースを使用できます。

含むscp

一部のコマンド(GNUバージョンcpなど)には、ターゲットを最初に配置するmvオプション(-tまたは)があります。--target-directory=DIRECTORYただし、デフォルトは標準の「ターゲット前ソース」です。。これは便利なので、このようなものを使用するときにソースの前にターゲットを配置したり with を使用したりすることをfind ... -exec cp -t target/ {} +避けることができます(この方法ははるかに遅く、各引数にできるだけ多くのコマンドを受け入れるのではなく、引数ごとに1つのコマンドを分岐させる(コマンドライン) 、例えば-I {}xargsxargs... | xargs -0r mv -t target/... | xargs -0r -I {} mv {} target/

上記のような明示的なオーバーライドオプションがなければ、「ソース前のターゲット」はほとんど聞いたことがありません。あまりにも珍しいので、「え?何?」と思う権利があります。


scp同時に複数のファイルを複数のコンピュータに転送する必要がある場合は、次のようにforループで実行してください。

for h in host1 host2 host3... ; do
  scp file1 file2 file3... "user@$h:/path/"
done

または使用pdcp 並列分散シェルからpdshほとんどのLinuxディストリビューション用にパッケージ化されています。

例えば

pdcp -w host1,host2,host3 file1 file2 file3 /path/to/target/

pdshこれは、任意のグループ名(、、、、、またはその他の名前)を使用してホストおよびホストグループを定義するために使用できる設定ファイルを含む非常に簡単な例です。その後、orコマンドで使用できます。allwebserversdbserversgpunodespdshpdcp

pdsh -g all 'uname -a ; uptime'
pdcp -g webservers index.html /var/www/

上記のループとは異なり、forコマンドを実行したり、一度に1つのホストを順番にファイルをコピーしたりしません。コンピュータのCPUコアの数に応じて合理的な制限を設定し、複数のコマンドを並列に実行します。

おすすめ記事