0

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

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

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

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

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

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

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

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

这样做的另一个优点是没有必须保护外壳的字符。

于 2012-07-08T09:27:46.580 回答