1つのパスで複数のファイルをscpする-1つのターゲットサーバー上の複数の宛先へ?


9

いくつかのディレクトリにある約6個のファイルをターゲットマシンの同じディレクトリにscpしたいと思います。

sshキーを使用しない場合、これは1回の呼び出しで可能ですか?

例えば:

scp /path/to/fileA,/anoth/erpath/to/fileB,/yet/more/files/*    #continue next line
    destination:/path/to,/anoth/erpath/to,/yet/more/files

回答:


8

送信側でファイルを圧縮し、受信側で解凍します。

tar -cf - /path/to/fileA /anoth/erpath/to/fileB /yet/more/files/* |
ssh -C destination 'cd / && tar -xf -'

sftpセッションのスクリプトを作成するか、適切なフィルターでrsyncを使用することもできます。


数個のファイルしかない場合は、合計でコピーする必要がありますが、scp -r解決策はありがたいです。しかし、より多くの場合、これははるかに高速です。
xaedes 2013年

4

複数のsrcから1つの宛先にコピーできます。scp -r src1 src2 ... dst ただし、複数の宛先には送信できません。

1つのオプションは、すべてのディレクトリーを一時宛先ディレクトリーにコピーすることです。その後、それらを元に戻します。


これはtar-sshソリューションと同じように機能します。加えて、タイプ/覚えやすいです。また、何がアップロードされているかをフィードバックします。ただし、tar-sshは1つの大きなファイルを転送するだけでよいので、tar-sshをコピーする多くの小さなファイルがある場合は、はるかに速くなります。
xaedes 2013年

1

psshパッケージを見てください。それは持っているparallel-scpコマンドを使用します。-hオプションを使用すると、宛先として複数のホストを含​​むテキストファイルを提供できます(1行に1つ)。


これは、AからBにファイルが移動するたびにパスワードを要求する必要を回避しますか?
ウォーレン

2
そのために私は使用していssh-addます。一日の始めに一度だけ資格情報を入力します。その後、自動的にログインします。
カジュアルコーダー

0

次のコマンドを使用して、複数のファイルを複数の宛先にコピーします。

scp -r src {1,2,3} dest {1,2,3}

このコマンドは、次の一連のコマンドのように機能します

scp -r src1 dest1

scp -r src1 dest2

scp -r src3 dest2

scp -r src3 dest3


試してもうまくいきません。ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directory宛先をディレクトリにする必要があります。
sudo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.