GNU/Linux >> Linux の 問題 >  >> Linux

1 つのコマンドで scp 経由で複数のファイルをコピーするにはどうすればよいですか?

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 -"

Linux
  1. scp を使用して複数のファイルを同時にコピーする方法

  2. tar コマンドを使用して、圧縮せずにファイルをグループ化するにはどうすればよいですか?

  3. 1 つのコマンドで複数の tar ファイルを連結する

  1. Linuxで一度に複数のファイルの名前を変更する方法

  2. LinuxでRsyncコマンドを使用するにはどうすればよいですか?

  3. VIM で複数のファイルを編集するにはどうすればよいですか?

  1. Linuxでファイルを複数のディレクトリにコピーする方法

  2. 複数のファイルを1つのgzファイルにgzipする方法は?

  3. 大きなファイルを LAN 上の複数のマシンにコピーする