Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux删除至少2周前和(月日)%14!=0_Linux_Shell_Ubuntu_Delete File - Fatal编程技术网

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周的存档中