Linux で複数のファイルをコピーする

Linux で複数のファイルをコピーする

フォルダー名が数字で付けられた Linux マシンがあります。これらのフォルダーの範囲を別のサーバーに安全にコピーするにはどうすればよいでしょうか? ソース マシンは tcsh を実行し、ターゲット マシンは bash を実行します。現時点では、コピーするデータを含むディレクトリから、次のコマンドを使用しています。

scp -r [2042-2046] user@target:home/user/destination_folder

ソース マシンはターゲットのパスワードを要求し、ファイルをコピーしているように見えますが、ターゲット マシンには何も届きません。エラーはありません。ただし、フォルダーの範囲を単一のフォルダー名に置き換えると、コピーは正常に機能します。

scp -r 2042 user@target:home/user/destination_folder

ただし、これは scp コマンドを 5 回繰り返して、そのたびにパスワードを入力することを意味し、特に範囲が大きい場合は非常に非効率的です。

答え1

範囲

[2042-2046]

ファイル 2 とファイル 6 として解釈されるようです。

必要な範囲は次のとおりです。

204[2-6]

答え2

SSH 経由で tar ストリームを使用することもできます:

tar cvf --include='204[2-6]' - . | ssh user@target "cd /home/destination/folder; tar xvf -"

答え3

バッシュを使うブレース拡張表現:

scp -r {2042..2046} user@target:home/user/destination_folder

ブレースの拡張が発生することに注意してください前にパラメータ展開のため、次のように記述することはできません。

start=2042
end=2046
scp -r {$start..$end} user@target:home/user/destination_folder

なしでeval

関連情報