Как создать одинаковый 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 могут содержать одно и то же содержимое.