Version control 如何创建同一文件的相同gzip?

Version control 如何创建同一文件的相同gzip?,version-control,binary,compression,diff,mysqldump,Version Control,Binary,Compression,Diff,Mysqldump,我有一个文件,它的内容是相同的。它被传递到gzip,并且只存储压缩的表单。我希望能够再次生成zip,并且仅在它们不同时更新我的副本。目前,diffing工具(diff、xdelta、subversion)将文件视为已更改 前提是,我正在将一个重要数据库的mysqldump存储到subversion存储库中。我的意图是cronjob定期转储db、gzip并提交文件。目前,每次转储文件,然后gzip,都被认为是不同的。我不想让我的修订号不必要地每15米增加一次 我意识到我可以将文件作为纯文本转储,但

我有一个文件,它的内容是相同的。它被传递到gzip,并且只存储压缩的表单。我希望能够再次生成zip,并且仅在它们不同时更新我的副本。目前,diffing工具(diff、xdelta、subversion)将文件视为已更改

前提是,我正在将一个重要数据库的mysqldump存储到subversion存储库中。我的意图是cronjob定期转储db、gzip并提交文件。目前,每次转储文件,然后gzip,都被认为是不同的。我不想让我的修订号不必要地每15米增加一次

我意识到我可以将文件作为纯文本转储,但我不希望这样,因为它太大了

我当前用于生成转储的命令是:

mysqldump $DB --skip-extended-insert | sed '$d' | gzip -n > $REPO/$DB.sql.gz
-n
指示gzip删除文件名/时间戳信息。sed'$d'删除mysqldump放置时间戳的文件的最后一行

在这一点上,我可能会恢复到以纯文本方式存储它,但我很好奇有什么样的解决方案

解决了,当正确的参数是小写时,我错误地使用了大写N。

-N指示gzip删除 文件名/时间戳信息


事实上,情况正好相反<代码>-n告诉它忘记原始文件名和时间戳。

我认为gzip保留了文件上的原始日期和时间戳,这将导致它生成不同的存档

-N --name
          When  compressing,  always  save  the original file
          name and time stamp;  this  is  the  default.  When
          decompressing,  restore  the original file name and
          time stamp if present. This  option  is  useful  on
          systems  which  have a limit on file name length or
          when the time stamp has  been  lost  after  a  file
          transfer.

但是要注意:在同一个未更改文件的不同时间生成的两个gzip是不同的。这是因为gzip本身带有gzip创建日期的时间戳——这会写入gzip文件的头。因此,明显不同的GZIP可以包含完全相同的内容。

总是有些愚蠢的事情。唉。谢谢你指出这个愚蠢的错误。