8

複数のファイルを複数の場所に送信する必要がありますが、適切な方法が見つかりません。

たとえば、file1 を location1 に、file2 を location2 に送信する必要があります。これは私がやっていることです:

scp file1 file2 root@192.168.1.114:/location1 /location2

しかし、これは機能していません。なにか提案を?

4

5 に答える 5

11

scp1 つのコマンドで複数のリモート ロケーションに送信することはできません。複数のソース ファイルに対応できますが、宛先は 1 つだけです。コマンド自体を使用するscp場合は、2 回実行する必要があります。

scp file1 file2 user@192.168.1.114:/location1 
scp file1 file2 user@192.168.1.114:/location2

for ループを実行することで、これを「ワンライナー」に変えることができます。たとえば、bash では次のようになります。

for REMOTE in "user@192.168.1.114:/location1" "user@192.168.1.114:/location2"; do scp file1 file2 $REMOTE; done

scpそれでも複数回実行されますが、ループが反復を処理します。とは言っても、コマンドを一度実行して上向き矢印を押して (ほとんどの環境で元のコマンドに戻る)、リモートの場所を変更して再送信する方が簡単だと思います。

于 2013-07-14T15:38:34.557 に答える
4

scp コマンドを .sh ファイルに入れ、ユーザー名とパスワードを 1 行で指定して scp コマンドを実行できます。

vim ~/fileForSCP.sh

#!/bin/sh
sshpass -p {password}   scp    file1     root@192.168.1.114:/location1 
sshpass -p {password}   scp    file2     root@192.168.1.114:/location2
sshpass -p {password}   scp    file3     root@192.168.1.114:/location3
...
sshpass -p {password}   scp    file{n}   root@192.168.1.114:/location{n}


その後:

chmod 777 ~/fileForSCP.sh
~/fileForSCP.sh
于 2015-05-31T11:38:50.703 に答える
2

scp単一のコマンドでそれを行うことはできません。2回使用するだけscpです:

scp file1 root@192.168.1.114:/location1
scp file2 root@192.168.1.114:/location2
于 2013-07-14T15:21:49.870 に答える
0

たとえば、シンボリックリンクを使用して、目的のリモートツリー構造を構築できます

ln -s ファイル 1 ターゲット/場所 1/ファイル 1 ... など

この後、逆参照コピーを使用してこれらのファイルをプッシュできます

rsync -rL ターゲット -e ssh user@host:/tmp

于 2013-07-14T15:49:12.673 に答える