Как сказать gzip сохранять исходный файл?

Вот named.conf, который будет просто работать на кэширование, это - в основном значение по умолчанию, но запрашивает серверы OpenDNS для DNS ins fordwarders раздел.

// 
// /etc/named.conf
//

options {
    directory "/var/named";
    pid-file "/var/run/named/named.pid";
    auth-nxdomain yes;
    datasize default;
// Uncomment these to enable IPv6 connections support
// IPv4 will still work:
//  listen-on-v6 { any; };
// Add this for no IPv4:
//  listen-on { none; };

    // Default security settings.
    allow-recursion { 127.0.0.1; };
    allow-transfer { none; };
    allow-update { none; };
    allow-query  { 127.0.0.1; };

    forwarders {
        208.67.222.222;
        208.67.220.220;
    };
    version none;
    hostname none;
    server-id none;
};

zone "localhost" IN {
    type master;
    file "localhost.zone";
    allow-transfer { any; };
};

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "127.0.0.zone";
    allow-transfer { any; };
};

zone "." IN {
    type hint;
    file "root.hint";
};

//zone "example.org" IN {
//  type slave;
//  file "example.zone";
//  masters {
//      192.168.1.100; 
//  };
//  allow-query { any; };
//  allow-transfer { any; };
//};

logging {
        channel xfer-log {
                file "/var/log/named.log";
                print-category yes;
                print-severity yes;
                print-time yes;
                severity info;
        };
        category xfer-in { xfer-log; };
        category xfer-out { xfer-log; };
        category notify { xfer-log; };
};

Я не вполне уверен ни один из zoneтребуются, но я оставляю их там так или иначе. Это должно работать везде, где связывают, делает. Можно хотеть позволить, рекурсия и запрос на больше, чем просто 127.0.0.1 все же.

216
05.07.2013, 04:26
3 ответа

Для GNU gzip 1.6 или выше, FreeBSD и производные или последние версии NetBSD, см. ответ don_cristi.

С любой версией можно использовать перенаправления оболочки в качестве в:

gzip < file > file.gz

При отсутствии предоставления аргумента, gzip читает его стандартный вход, сжимает его и пишет сжатую версию в его стандартный вывод. В качестве награды, при использовании перенаправлений оболочки, Вы не должны волноваться о названных файлах "--help" или "-" (что последний, все еще являющийся проблемой для gzip -c --).

Другое преимущество gzip -c file > file.gz это если file не может быть открыт, команда перестанет работать, не создавая пустое file.gz (или перезапись существующего file.gz) и без выполнения gzip вообще.

Значительная разница по сравнению с gzip -k хотя то, что не будет никакой попытки копирования fileметаданные (владение, полномочия, время изменения, название несжатого файла) к file.gz.

Также, если file.gz уже существовал, это тихо переопределит его, если Вы не повернулись noclobber опция на в Вашей оболочке (с set -o noclobber например, в оболочках POSIX).

251
27.01.2020, 19:28
  • 1
    Теперь это обращается к специфическим особенностям вопроса OP и отвечает на общий вопрос, "Как сказать gzip сохранять исходный файл". Очень удобный и более полезный, чем -c. –  codewaggle 18.12.2012, 23:20
  • 2
    Обратите внимание, что <и>, как на самом деле предполагается, вводятся в команду и не представляют заполнителя для имени файла –  Gaurav Gupta 23.02.2015, 13:32

Из документации кажется, что нет никакой опции создать копию файла.

Можно определить функцию оболочки

gzipkeep() {
    if [ -f "$1" ] ; then
        gzip -c -- "$1" > "$1.gz"
    fi
}

и затем

gzipkeep file.txt
30
27.01.2020, 19:28
  • 1
    это, если файл -, необходимо назвать его как gzipkeep ./-. –  Stéphane Chazelas 07.01.2014, 19:13

Обратите внимание, что недавно (июнь 2013) выпустил gzip-1.6 "принимает - сохраняют (-k) опцию, для непротиворечивости с инструментами как xz, lzip и bzip2. При использовании этой опции, gzip больше не удаляет названные входные файлы при сжатии или распаковке".

Выборка из страницы справочника:

  -k --keep
         Keep (don't delete) input files during compression or decompression.

Так, с 1.6, можно использовать -k или --keep сохранять исходный файл:

gzip -k -- "$file"

(обратите внимание, что это не работает если $file - (который gzip интерпретирует как значение stdin вместо фактического названного файла -), в этом случае необходимо изменить его на ./-)

Та опция была сначала представлена в реализации FreeBSD gzip (в FreeBSD 7.0 в 2007) для непротиворечивости с bzip2. Это gzip на основе переписывания GNU gzip NetBSD. -k опция в конечном счете возвратилась к NetBSD в 2010.

142
27.01.2020, 19:28
  • 1
    Geez. RHEL6 только идет с zip 1.3.12 в основе... –  Nicholas Tolley Cottrell 25.06.2013, 17:36
  • 2
    Linux, Это работает над MAC/OS X :) (который является BSD), –  paul 30.06.2016, 02:56
  • 3
    Разве там много стандартных дистрибутивов не используют> = 1.6 еще? Удивление, если для ответа нужен updat –  MichaelChirico 28.11.2017, 18:31

Теги

Похожие вопросы