複数行で実行できる簡単なタスクがありますが、これを 1 行の cron ジョブで実行したいので、12 行に分けて実行したくありませんでした。設定は次のとおりです。
画像処理共有に 1 つのフォルダーがあり、画像を取得して、場所などに応じて 12 個の異なるフォルダーに移動します。フォルダー名は 1a、2a、3a、4a、5a、6a などから 12a までです。フォルダー 1a ~ 6a は dr01 にマウントされたドライブに移動し、フォルダー 7a ~ 12a は dr02 という名前のマウントされたフォルダーに移動する必要があります。各 #a フォルダーには、多数のサブフォルダーとファイルが含まれています。
そこで、../images/1a を ..DR01/1a に 1 日に 2 回 rsync したいとします。各フォルダーに対して個別にこれを行うには、次のようにします。
rsync -avh --remove-source-files /images/1a/ /usr/local/blah/dr02/1a/
ディレクトリ全体を同期できればよいのですが、ファイルの半分が 1 つの共有に、残りの半分が別の共有に送られるため、分割する必要があります。
各フォルダーを同期するために 12 個の rsync ジョブを作成する必要なしにこれを行うより良い方法はありますか? それらを rsync 行などでグループ化する方法はありますか? 以前は union-fs を使用して DR を結合していましたが、これはもう機能しないオプションです。
この問題の解決に役立つヒントがあれば、ぜひ教えてください。
答え1
シェルが{x..y}
型構造を展開できると仮定すると、次のようなものが機能する可能性があります。(行全体の先頭に . を付けて、コマンドラインからテストしてくださいecho
。)
rsync -avh --remove-source-files /images/{1..6}a /mnt/dr01/
rsync -avh --remove-source-files /images/{7..12}a /usr/local/blah/dr02/