0

我每天都在为我的数据库创建备份。

对于硬盘保存,如何从shell 脚本2 weeks中删除早于AND的文件?(day of month) % 14 != 0

所以我正在寻找类似的命令find / -mtime +14 -exec rm {} \;,除了不删除在任何一个月的第 14 天或第 28 天创建的文件。

我想在过去 2 周之后每 2 周(几乎)进行一次每日备份?

循环中的 PHP 代码将是:

$mtime = filemtime($file); // Last modified date of file (created)
$day_mtime = date('j', $mtime); // Day of month (1-31)
$two_weeks_ago = time() - 60 * 60 * 24 * 14;

if ($mtime < $two_weeks_ago && $day_mtime % 14 != 0) {
    // Delete file older than 2 weeks 
    // AND not modified not 14'th nor 28'th day of month
}
4

1 回答 1

1

这是 bash 等价物。从 php 迁移到 bash 时需要注意的几点:

  • 在 bash$中表示“...的值”,变量也是如此mtime,也是变量$mtime的值
  • 符号$(...)表示运行括号中的命令并捕获其输出因此,$(stat -c %Y $file)替换为的输出stat -c %Y $file
  • 赋值操作符周围不能有空格a=b有效,a = b

    mtime=$(stat -c %Y $file)
    day_mtime=$(date -d@$mtime +%d)
    two_weeks_ago=$(date -d '2 weeks ago' +%s)
    mod_14_day=$(expr $day_mtime 14)
    if [ $mtime -lt $two_weeks_ago ] && [ $mod_14_day -eq 0 ] ; then
    fi
    
于 2012-11-16T12:23:17.843 回答