Shell命令删除旧文件

时间:2012-07-08 08:02:01

标签: shell cron centos cpanel

我正在远程FTP位置备份客户的网站。我有一个脚本(在cPanel上没有root访问权限可用),它在给定的cron上进行备份并将其传输到远程ftp位置。现在真正的问题就出现了;因为我们不能在任何服务器上拥有无限千兆字节的磁盘空间,因此我们必须限制备份。我找到了shell命令(可以直接添加到cronjob或者通过创建bash脚本并从cron调用该脚本。我想保留1周的每日备份。我想删除该目录中超过1周的任何备份我找到了以下看起来很有希望的命令

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

但是当我运行此命令时(为了测试我将'rm'替换为'ls -l')我得到了以下错误

find: missing argument to `-exec'

任何人都可以帮忙解决这个小问题吗?

我正在运行CentOS + cPanel

谢谢

2 个答案:

答案 0 :(得分:1)

可能你只需要在右括号之后放置空格:

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

我无法在CentOS上进行测试,但如果我不在括号周围放置空格,则在我的系统上无效。

答案 1 :(得分:0)

分号必须是一个单独的参数(一周是7天):

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

实际上,您可能最好使用符号+代替;,因为它会将尽可能多的文件名组合成一个命令执行,而不是像xargs但没有调用xargs。因此:

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

这样做的另一个好处是没有必须保护shell的字符。