Как создать одинаковый GZIP из того же файла?

У меня есть файл, его содержимое идентично. Он передается в gzip и сохраняется только сжатая форма. Я хотел бы иметь возможность сгенерировать zip снова и обновлять только мою копию, если они отличаются. В отличие от инструментов сравнения (diff, xdelta, subversion) файлы видятся как измененные.

Исходя из этого, я храню mysqldump важной базы данных в хранилище Subversion. Я намерен, чтобы cronjob периодически сбрасывал базу данных, распаковывал ее и фиксировал файл. В настоящее время каждый раз, когда файл выгружается и затем архивируется, он считается отличающимся. Я предпочел бы, чтобы мои номера ревизий не увеличивались без необходимости каждые 15м.

Я понимаю, что могу вывести файл как обычный текст, но я бы предпочел, чтобы он не был слишком большим.

Команда, которую я сейчас использую для создания дампов:

mysqldump $DB --skip-extended-insert | sed '$d' | gzip -n > $REPO/$DB.sql.gz

-n поручает gzip удалить информацию об имени файла / метке времени. sed '$d' удаляет последнюю строку файла, где mysqldump помещает метку времени.

На данный момент, я, вероятно, вернусь к тому, чтобы хранить его в виде простого текста, но мне было любопытно, какое решение существует.

Решено, мистер Брайт был прав, я по ошибке использовал заглавную N, когда правильный аргумент был строчным.

3 ответа

Решение

-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.

Но будьте осторожны: два gzips, сделанные в разное время из одного и того же неизменного файла, различаются. Это связано с тем, что gzip сам имеет временную метку с датой создания gzip - это записывается в заголовок файла gzip. Таким образом, очевидно, что разные gzips могут содержать одно и то же содержимое.

Другие вопросы по тегам