フォルダー名が数字で付けられた 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