1 つのコマンドで、scp ファイルを複数のローカルディレクトリから複数のリモートディレクトリにコピーします。

1 つのコマンドで、scp ファイルを複数のローカルディレクトリから複数のリモートディレクトリにコピーします。

複数のローカルディレクトリの一部のファイルを複数のリモートディレクトリにコピーする必要があります。

注文する:

scp -v /file/source1/* username@host_server:/file/destination1
scp -v /file/source2/* username@host_server:/file/destination2
scp -v /file/source3/* username@host_server:/file/destination3

パスワードを続けて尋ねます。

注文する:

scp file1 file2 ... fileN user@host:/destination/directory/

すべてのファイルをターゲットディレクトリに配置します。

しかし、私のすべてのファイルのターゲットは異なります。

ベストアンサー1

1つのコマンドに複数の宛先を指定することはできませんscp。単一のSSH接続を確立するには、別のツールを使用する必要があります。

最も簡単な解決策は、リモートファイルシステムを次にマウントすることです。SSHFScp次にコマンドを使用します。これにはSFTPアクセスが必要です。

mkdir host_server
sshfs username@host_server:/file host_server
cp /file/source1/* host_server/destination1
cp /file/source2/* host_server/destination2
cp /file/source3/* host_server/destination3
fusermount -u host_server
rmdir host_server

別の回避策は、まずファイルをローカルに構成し、次に階層をコピーすることです。これにはrsyncが必要です。

mkdir destination1 destination2 destination3
ln -s /file/source1/* destination1
ln -s /file/source2/* destination2
ln -s /file/source3/* destination3
rsync -a --copy-unsafe-links destination1 destination2 destination3 username@host_server:/file
rm -r destination1 destination2 destination3

もう一つの解決策は使い続けることですscp。ただし、まずサーバーへの基本接続を開きます。これの説明は次のとおりです。設定された SSH チャネルの使用

または、ただ吸い込んで3つのscp接続を作成してください。ただし、ログイン時にパスワードを使用しないでください。代わりに、キーペアを作成して秘密キーをキーエージェント(ssh-add ~/.ssh/id_rsa)にロードすると、接続するたびに何も入力する必要はありません。

おすすめ記事