tar
を使用 :
tar cvzf - -T list_of_filenames | ssh hostname tar xzf -
<ブロック引用>
そのためにscpを使用したいのですが、scpでは一度に1つのファイルしか転送できません。
少なくとも scp
についてはそうではないと確信しています ほとんどの Linux ディストリビューションに含まれる OpenSSH によって提供されるコマンド。
scp file1 file2 ... fileN [email protected]:/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 -"