• ベストアンサー

過去1週間のログだけをコピー その2

お世話になっています。 先日こちらで、「過去1週間のログだけをコピー」をするには、という質問をしまして、 > find logdir -type f -mtime -7 -exec cp -p {} otherdir/ \; でできると教えていただきました。  ところが、logが格納されているディレクトリ構成が logDir +- aDir   +- logfile.log +- bDir   +- logfile.log +- cDir   +- logfile.log となっていまして、上記の方法を使うと、logfile.logという複数のログファイルがすべて同じディレクトリにコピーされてしまいます。よって、logfile.logという3つのファイルはその都度上書きされて、最終的に1つしか残りません。  Windowsのxcopyコマンドのように、ディレクトリ階層を保ったまま、過去1週間に更新されたログだけをコピーする方法はないでしょうか。  よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

事前に、old/aDir、old/bDir、old/Cdirを作っておいて、 cd path/logdir find . -type f -mtime -7 -exec cp -p {} Path-to/old/{} \; がわかりやすいですかね。 あるいは、 cd path/logdir find . -type f -mtime -7 -print | cpio -pd Path-to/old/ だと、事前にサブディレクトリを作る必要がないですが、cpioは機能の多いコマンドなので初心者は避けた方が良いかも。

annyG
質問者

お礼

あ、そうですそうです。cpioを使うことにしました。 ありがとうございました。

その他の回答 (1)

  • wolf03
  • ベストアンサー率22% (241/1086)
回答No.1

・findとコピーを各ログのディレクトリに個別に行う ・シェルにして、find結果を一個ずつパスチェックしてコピー

annyG
質問者

お礼

ありがとうございました。 結局cpではなく、cpioを使うことで解決することにしました。

関連するQ&A