2012-04-27 15 views
0

最後にX日以内に作成されたすべての画像tarを作成するcronジョブを作成する必要があります。 私は自分のウェブサイトで、CPanelに設定してcronジョブを使用していますが、私はUNIXのものについては経験豊富なスクリプトライターではありません。どんな助けもありがとう。Cronを作成日時までにファイルに書き込む

これは私のcronジョブである:

0 4 * * 1 tar pzvcf /home/xxxxxx/public_html/backups/images_backup.tar /home/xxxxxx/public_html/images/products 

答えて

2

使用すると、すべての画像を検索し、タールにそれらを養うために見つけます。

このような何かが、最後の2日間で作成したファイルあなたを与える必要があります(-2 < 2 * 24時間を意味する)

find <path> -ctime -2 -print 

このような何かが、おそらく全体の仕事をしていません:

find <path> -ctime -<within_days> -print | tar cf <output.tar> -T - 

You need to specify: 
    <path>  (where to search for images) 
    <output.tar> (output file name) 
    <within_days> (add files < this many days old) 

tar cf <file>tar af <file>は、既存のtarボール

に追加-T -が再tarを伝え、tarballを作成し、 stdinからのコマンドのリストを表示します。

findコマンドは、一致するファイルのリストをstdoutにechosします。

|は、findのstdoutをtarのstdinに結合するので、tarはfindによって見つかったすべてのファイルを追加する必要があります。

+0

のcronは、既存のtarにファイルを追加することができるだろうか? – bikey77

+0

cvfの代わりにtar avfを使用して(c = create、a = append) - v outを残すこともできます(これは冗長であり、cronジョブで有用なものではありません)。 – John3136

+0

おそらく、通常のファイルのみをリストする 'find' 'tar'にディレクトリ名を渡すと、ディレクトリの内容全体を再帰的にアーカイブします。 'find -type f ...' –

0

はUは、findコマンド では、次のコマンド

tar -cvzf outputfilename.tar ` find . -name '*' -mtime -2 -print` 

を使用することができます。 - >ディレクトリ検索する * - >ファイルパターン -2 - >あなたのケースで日

の無を表す

0 4 * * 1 tar -cvz /home/xxxxxx/public_html/backups/outputfilename.tar ` find /home/xxxxxx/public_html/images/products -name '*' -mtime -2 -print` 
+0

findを使用できますか? -name 'l _ *。jpg'その​​パターンのファイルだけをタールしますか? – bikey77

+0

ファイルのリストが大きい場合(千単位)、この手法を使用すると 'コマンドラインが長すぎる'エラーが発生する可能性があります。また、ディレクトリをリストしないように 'find'を制限するのが最善です。 –

+0

再生が遅れて申し訳ありません。あなたがテストによってそれを見つけることを望むなら、Uはパターンを見つけるために同じものを使うことができます。ファイル数が多い場合、 ">>ログファイル名"を使用してダミーファイルに応答をリダイレクトできます。 – DAC84

関連する問題