0

現在、プロジェクトを tarball にバックアップしています。最新の 5 つのバックアップのみを保持したいと考えています。現在、スクリプトは次のようになっています。

tar -cjf $HOME/projects/foo.$(date +%Y%m%d%H%M%S).tar.bz2 $HOME/projects/foo > /dev/null 2>&1
find $HOME/projects -maxdepth 1 -name "foo*.tar.bz2" | ghead -n -5 | xargs rm > /dev/null 2>&1
# CR and blank line

tarball は作成されますが、古いものは削除されません。奇妙なことに、2 行目をコピーしてシェルに貼り付けると、ファイルが期待どおりに削除されます。コマンドラインから手動で呼び出すと、スクリプトは期待どおりに機能します。スクリプトが 2 行目に達していませんか、それとも、コマンドの実行に関するルールがいくつかcronありますか?

gnu-coreutils を使用した Mac OS X 10.8。cron起動サービスの下で使用しようとしましたが、同じ結果が得られました。

4

1 に答える 1

0

次のスクリプトは、cronまたは同等のものから呼び出されたときに機能するようになりました。手がかりをくれた@ansh0lに感謝します。

PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

cd $HOME/projects

tar -cjf foo.$(date +%Y%m%d%H%M%S).tar.bz2 foo
find ./ -maxdepth 1 -name "foo*.tar.bz2" | ghead -n -5 | xargs rm
于 2013-11-07T20:55:38.293 に答える