我有一个文件,其内容相同。它被传递给gzip,只存储压缩格式。我希望能够再次生成zip,并且只有在它们不同时才更新我的副本。因为它代表了差异工具(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放置时间戳的文件的最后一行。
此时,我可能会恢复以纯文本方式存储它,但我很好奇它有什么样的解决方案。
已解决,Mr. Bright was correct,当正确的参数为小写时,我错误地使用了大写字母N。
答案 0 :(得分:14)
-N指示gzip删除 文件名/时间戳信息。
实际上,情况正好相反。 -n
告诉它忘记原始文件名和时间戳。
答案 1 :(得分:3)
我认为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.
答案 2 :(得分:1)
但是注意:在同一个未更改文件的不同时间制作的两个gzips不同。这是因为gzip本身用gzip创建日期加上时间戳 - 这被写入gzip文件的头部。因此,明显不同的gzips可以包含完全相同的内容。