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 {}
xargs
xargs
... | 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コマンドで使用できます。all
webservers
dbservers
gpunodes
pdsh
pdcp
pdsh -g all 'uname -a ; uptime'
pdcp -g webservers index.html /var/www/
上記のループとは異なり、for
コマンドを実行したり、一度に1つのホストを順番にファイルをコピーしたりしません。コンピュータのCPUコアの数に応じて合理的な制限を設定し、複数のコマンドを並列に実行します。
答え2
このscp
コマンドを使用すると、以下を指定できます。源泉(コピーするファイルまたはディレクトリ)とターゲット(コピーされたファイルまたはディレクトリの場所)構文は次scp
のとおりです。
リモートコンピュータにファイルを送信するコンピュータを使用している場合:
scp /file/to/send username@remote:/where/to/put
これはremote
FQDNまたはIPアドレスです。
一方、コンピュータを使用していてリモートコンピュータからファイルを受信したい場合:
scp username@remote:/file/to/send /where/to/put
答え3
部分から推論できます...
。
複数のソースファイルをコピーできますが、1つのコピー先にのみコピーできます。これは...
、この場所に追加のファイルを指定できることを意味します。は...
すぐ後ろにあるので、file1
これはソースでなければなりません。
例:scp fileA fileB fileC
コピーfileA
とfileB
。fileC