複数のローカルディレクトリの一部のファイルを複数のリモートディレクトリにコピーする必要があります。
注文する:
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
)にロードすると、接続するたびに何も入力する必要はありません。