0

クライアントの Web サイトのバックアップをリモートの FTP ロケーションに作成しています。特定のcronでバックアップを作成し、リモートのftpの場所に転送するスクリプト(cPanelでルートアクセスなしで使用可能)があります。今、本当の問題が始まっています。どのサーバーでも無制限のギガバイトのディスク容量を持つことはできないため、バックアップを制限する必要があります。シェル コマンドを見つけていました (直接 cronjob に追加するか、bash スクリプトを作成してそのスクリプトを cron から呼び出すことができます。1 週間の毎日のバックアップを保持したいです。そのディレクトリから 1 週間より古いバックアップを削除したいです。有望に見える次のコマンドを見つけました

find /path/to/files -mtime +30 -exec rm  {}\;

しかし、このコマンドを実行すると(テストのために「rm」を「ls -l」に置き換えました)、次のエラーが発生しました

find: missing argument to `-exec'

誰でもこの小さな問題を解決するのを助けることができますか?

CentOS + cPanelを実行しています

ありがとうございました

4

2 に答える 2

1

右括弧の後にスペースを入れる必要があるかもしれません:

find /path/to/files -mtime +30 -exec rm  {} \;

CentOS ではテストできませんでしたが、私のシステムでは括弧の周りにスペースを入れないと動作しません。

于 2012-07-08T08:14:41.450 に答える
0

セミコロンは別の引数にする必要があります (1 週間は 7 日です)。

find /path/to/files -mtime +7 -exec rm {} ';'

実際には、できるだけ多くのファイル名を 1 つのコマンド実行に組み合わせることができる as の+代わりに表記法を使用する方がよいでしょう。したがって:;xargsxargs

find /path/to/files -mtime +7 -exec rm {} +

これのもう 1 つの利点は、シェルから保護する必要がある文字がないことです。

于 2012-07-08T09:27:46.580 に答える