Shell命令删除旧文件

问题描述:

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

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

但是,当我跑这条命令(用于测试我取代“RM”与“ls -l命令”),我得到了以下错误

find: missing argument to `-exec' 

任何人可以帮助解决这个小问题?

我正在运行Ce NTOS +的cPanel

谢谢

可能你只是有右括号后放空间:

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

我不能在CentOS测试,但我的系统上它不工作如果我没有在括号内放置空格。

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

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

事实上,你可能会做的更好使用符号+代替;因为这将组合成很多文件名称都很方便,只需执行一次命令,就像xargs一样,但不会调用xargs。因此:

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

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