Как создать одинаковый GZIP из того же файла? - PullRequest
9 голосов
/ 20 марта 2009

У меня есть файл, его содержимое идентично. Он передается в 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 ]

14 голосов
/ 20 марта 2009

-N дает команду gzip удалить имя файла / метка времени.

На самом деле, это как раз наоборот. -n - это то, что говорит ему забыть исходное имя файла и отметку времени.

3 голосов
/ 20 марта 2009

Я думаю, что 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.
1 голос
/ 03 апреля 2013

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

...