Linux删除至少2周前和(月日)%14!=0
我每天都在创建数据库备份 对于硬盘保存,我如何删除早于Linux删除至少2周前和(月日)%14!=0,linux,shell,ubuntu,delete-file,Linux,Shell,Ubuntu,Delete File,我每天都在创建数据库备份 对于硬盘保存,我如何删除早于2周和(月日)%14!=是否从shell脚本执行0 所以我在寻找类似于find/-mtime+14-execrm{}的命令,添加不删除在任何月份的第14天或第28天创建的文件 我想对过去两周的进行每日备份,并且每两周进行一次(几乎)之后的 循环中的PHP代码是: $mtime = filemtime($file); // Last modified date of file (created) $day_mtime = date('j', $
2周
和(月日)%14!=是否从shell脚本执行0
所以我在寻找类似于find/-mtime+14-execrm{}的命令代码>,添加不删除在任何月份的第14天或第28天创建的文件
我想对过去两周的进行每日备份,并且每两周进行一次(几乎)之后的
循环中的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
}
$mtime=filemtime($file);//上次修改文件的日期(已创建)
$day_mtime=日期('j',$mtime);//月日(1-31)
$two_weeks_ago=时间()-60*60*24*14;
如果($mtime<$2周前&&$day\u mtime%14!=0){
//删除超过2周的文件
//不可修改,不可在每月14日或28日修改
}
这是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
好的,实际上我并不想为bash编写php代码。我正在查看一个命令,比如find/-mtime+14-execrm{}代码>,但添加了(一天中的一周)%14!=0
是的,%14是一个非常特殊的例子,在Linux(或者其他平台)上,你找不到任何现成的东西可以做到这一点。您可以使用find
来输入上述脚本,以减少候选文件的列表,但是%14必须使用自定义代码来完成。为什么要变得复杂呢。首先查找14日或28日创建的任何内容,然后将其复制到2周和4周的存档中