Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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 Bash从文件列表中获取时间戳,并将其与文件名进行比较_Linux_Bash - Fatal编程技术网

Linux Bash从文件列表中获取时间戳,并将其与文件名进行比较

Linux Bash从文件列表中获取时间戳,并将其与文件名进行比较,linux,bash,Linux,Bash,为一个项目实现GIT存储库我们通过在部署后提交钩子上生成转储来包括DB结构 我想要的是一个基于表结构最后一次更改的时间戳的文件的简单版本控制系统 在发现有人建议在MySQL数据目录中检查*.frm文件的日期后,我认为解决方案应该是根据最后一个日期作为生成文件的一部分来实现它。这是: 通过ls命令(ls-la*.frm类型)查找数据库文件(即/var/lib/mysql/databaseX/)的最新日期和时间 将该值(上次更改的文件)与某个文件(ie/project/dump_2012102620

为一个项目实现GIT存储库我们通过在部署后提交钩子上生成转储来包括DB结构

我想要的是一个基于表结构最后一次更改的时间戳的文件的简单版本控制系统

在发现有人建议在MySQL数据目录中检查*.frm文件的日期后,我认为解决方案应该是根据最后一个日期作为生成文件的一部分来实现它。这是:

  • 通过ls命令(ls-la*.frm类型)查找数据库文件(即/var/lib/mysql/databaseX/)的最新日期和时间

  • 将该值(上次更改的文件)与某个文件(ie/project/dump_2012102620001.sql)中的值进行比较,其中的数字对应于上次生成的转储

  • 如果文件时间戳在该日期之后,则生成mysqldump命令,否则忽略该命令,以便不会生成转储文件,并且 作为对GIT的更改提交


  • 不幸的是,我的Linux console/bash概念离功能太远,没有找到任何类似的脚本可供使用。

    您可以使用
    [[file1-ot file2]]
    来测试file1是否比file2旧

    last=$(ls -tr /path/to/db/files/*.frm | tail -n1)
    if [[ dump -ot $last ]] ; then
        create_new_dump
    fi
    

    您可以使用
    [[file1-ot file2]]
    测试file1是否早于file2

    last=$(ls -tr /path/to/db/files/*.frm | tail -n1)
    if [[ dump -ot $last ]] ; then
        create_new_dump
    fi
    

    通过每次使用适当的
    mysqldump
    命令转储表结构,您可以省去很多麻烦,因为这是相对轻量级的,因为它不包含表内容。去掉顶部的可变时间戳信息,并与上一个文件进行比较。如果不同,则进行存储。

    每次只需使用适当的
    mysqldump
    命令转储表结构,就可以省去很多麻烦,因为这是一个相对轻量级的命令,因为它不包含表内容。去掉顶部的可变时间戳信息,并与上一个文件进行比较。如果不同,请储存。

    这听起来确实是一个合理的选择。转储需要几秒钟的时间。我将不得不收集如何剥离这条线或忽略差异。。。“Dump completed on 2012-10-31 9:13:56”需要一点bash编码,但是这个根目录的一个好选项是使用diff参数“–ignore matching lines”,即diff mysqldump2.sql mysqldumped.sql–ignore matching lines=“Dump completed on”这听起来确实是一个合理的选项。转储需要几秒钟的时间。我将不得不收集如何剥离这条线或忽略差异。。。“Dump completed on 2012-10-31 9:13:56”需要一点bash编码,但此根目录的一个好选项是使用diff参数“–忽略匹配行”,即diff mysqldump2.sql mysqldumped.sql–ignore matching lines=“Dump completed on”代码工作正常,感谢您的提示,但不幸的是,由于GIT文件的性质,时间戳没有保留,并应用于签出完成的时间()。这将导致一些问题,因为存储库中转储的文件将无法维护其创建的日期时间,因此比较不可信:(代码工作正常,感谢提示,但不幸的是,由于GIT文件的性质,时间戳没有保留,并应用于签出完成的时间()。这将导致问题,因为存储库中转储的文件无法保持其创建的日期时间,因此比较不可信:(