複数のファイルを複数の場所に送信する必要がありますが、適切な方法が見つかりません。
たとえば、file1 を location1 に、file2 を location2 に送信する必要があります。これは私がやっていることです:
scp file1 file2 root@192.168.1.114:/location1 /location2
しかし、これは機能していません。なにか提案を?
複数のファイルを複数の場所に送信する必要がありますが、適切な方法が見つかりません。
たとえば、file1 を location1 に、file2 を location2 に送信する必要があります。これは私がやっていることです:
scp file1 file2 root@192.168.1.114:/location1 /location2
しかし、これは機能していません。なにか提案を?
scp
1 つのコマンドで複数のリモート ロケーションに送信することはできません。複数のソース ファイルに対応できますが、宛先は 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
それでも複数回実行されますが、ループが反復を処理します。とは言っても、コマンドを一度実行して上向き矢印を押して (ほとんどの環境で元のコマンドに戻る)、リモートの場所を変更して再送信する方が簡単だと思います。
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
scp
単一のコマンドでそれを行うことはできません。2回使用するだけscp
です:
scp file1 root@192.168.1.114:/location1
scp file2 root@192.168.1.114:/location2
たとえば、シンボリックリンクを使用して、目的のリモートツリー構造を構築できます
ln -s ファイル 1 ターゲット/場所 1/ファイル 1 ... など
この後、逆参照コピーを使用してこれらのファイルをプッシュできます
rsync -rL ターゲット -e ssh user@host:/tmp