何千ものサブディレクトリがロードされたディレクトリがあります:
/home/tmp/
1
12
123
1234
2345
234
3456
345
34
各サブディレクトリには、最初のレベルのサブディレクトリが一致する場合にrsyncを実行する数百のサブディレクトリがあります...
私が必要なのは、特定の数字[1-9]で始まるディレクトリのみをコピー/ rsyncする方法です...
私が欲しいと思うのは、基本的にワイルドカードを使用して一致させることができるものです
rsync -rzvvhP remotehost:/home/tmp/1* /home/tmp/
Rsyncに同期させたい
/home/tmp/1/
/home/tmp/12/
/home/tmp/123/
/home/tmp/1234/
ディレクトリとそれらが持つすべての子サブディレクトリですが、異なる数字で始まる第1レベルのディレクトリはありません...
/home/tmp/234/
/home/tmp/2345/
........./3*/
........./4*/ etc..
私が試したこと:
rsync -rzvvhP --exclude='*' --include-from=1.txt remotehost:/home/tmp/ /home/tmp/
ここで、1.txtには以下が含まれます。
1
12
123
1234
2.txtでこれを行うと、rsyncはまだ1と3で始まるすべてのディレクトリを実行しているようです...
特定の数字で始まるディレクトリのみをrsyncする1つのコマンドを使用できるようにするには、どうすればよいですか?
あなたが提案したことは実際にうまくいくはずです:
rsync -rzvvhP remotehost:/home/tmp/1\* /home/tmp/
(パターン*
はどのファイルにも一致しない可能性が高いため、ほとんどの状況ではremotehost:/home/tmp/1\*
を引用符で囲まなくても済むため、ほとんどのシェルセットアップではそのままになります。)
最初の一致が適用され、すべての最初の一致(--exclude='*'
)が除外するよう指示しているため、*
での試行は失敗しました。
Rsyncフィルターに関するいくつかの一般原則については このガイド を参照してください。ここでは、トップレベルで1
で始まるディレクトリのみを含め、含まれるサブディレクトリのすべてをコピーするには、/1
を含めてから/*
を除外します。
rsync -rzvvhP --include='/1' --exclude='/*' remotehost:/home/tmp/ /home/tmp/