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


1

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

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]

0

SSH経由でtarストリームを使用できます。

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

0

bash ブレース展開式を使用します。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.