tar を使用 :
tar cvzf - -T list_of_filenames | ssh hostname tar xzf -
<ブロック引用>
そのためにscpを使用したいのですが、scpでは一度に1つのファイルしか転送できません。
少なくとも scp についてはそうではないと確信しています ほとんどの Linux ディストリビューションに含まれる OpenSSH によって提供されるコマンド。
scp file1 file2 ... fileN example@unixlinux.online:/destination/directory/ を使用しています
透過的な圧縮のために、SSH プロトコルにはこれが組み込まれており、scp -C を指定すると使用できます コマンドラインのオプション。似たような小さなファイルがたくさんある場合、akira が提案する tar+gz オプションの方が圧縮率が高いことがわかります。これは、scp のようなファイル間の類似性を利用できるためです。 各ファイルを個別のエンティティとして圧縮します。部分的な転送を再開する方が簡単なので、一般的にはscpを使用することを好みます(または、この状況では質問者にオプションがないことはわかっていますが) rsync これは、再開がさらに簡単で、tar+gz オプションのストリーム全体の圧縮の利点を共有するためです。
scp -r yourdir otherhost:/otherdir ではない
これを試してください:
tar cfz - . | ssh otherhost "cd /mydir; tar xvzf -"
z -flag to tar は圧縮を行います。または、-C を使用して ssh を実行することもできます:
tar cf - . | ssh -C otherhost "cd /mydir; tar xvf -"