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中受到保护。