【问题标题】:Shell Command to remove older filesShell 命令删除旧文件
【发布时间】:2012-07-08 01:23:54
【问题描述】:

我正在远程 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

谢谢

【问题讨论】:

    标签: shell cron centos cpanel


    【解决方案1】:

    也许你只需要在右括号后加空格:

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

    我无法在 CentOS 上进行测试,但在我的系统上,如果我不在括号内加空格,它就无法工作。

    【讨论】:

      【解决方案2】:

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

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

      实际上,您可能会更好地使用符号+ 代替;,因为这样可以方便地将尽可能多的文件名组合到单个命令执行中,就像xargs 那样但不调用@987654325 @。因此:

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

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

      【讨论】:

        猜你喜欢
        • 2018-05-21
        • 2018-12-28
        • 2014-08-08
        • 1970-01-01
        • 2015-05-28
        • 1970-01-01
        • 2014-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多