tar --list только файлы и папки верхнего уровня

Я нашел этот учебник: Как кэшировать репозитории openSUSE с помощью Squid.

выдержка

Как заставить ваш локальный веб-кэш Squid работать с репозиториями openSUSE и процессом сетевой установки openSUSE. По сути, как запустить полностью автономное локальное зеркало репозитория по требованию. Даже при высокоскоростном ADSL-соединении с Интернетом легко достигается экономия до 60%.

Ниже приведены пошаговые детали из этой статьи.

Шаг за шагом

  1. Squid

    Веб-прокси Squid является ключевым элементом в этой установке, поэтому наличие работающей установки Squid является необходимым условием. Настройка Squid не так сложна, как может показаться, но вам придется обратиться к документации по Squid, это выходит за рамки данной статьи. Предпочитаете ли вы направлять доступ с помощью переменных окружения http_proxy и т.д., или вы используете прозрачный прокси (как я), не так уж важно.

    Примечание: приведенные здесь настройки работают для Squid 2.7, я не думаю, что функция storeurl_rewrite была реализована в Squid 3.x.

  2. jesred

    jesred - это рерайтер URL. Он достаточно зрелый, но полностью функциональный. (original webpage). Мне пришлось сделать пару изменений, чтобы сделать его полностью совместимым с squid 2.7:

    На данный момент он не упакован, вам придется собирать его с нуля:

    tar xzvf 
    cd jesred-1.3
    make
    

    Установка: когда закончите, скопируйте двоичный файл jesred в /usr/local/bin или в любое другое место, которое вы предпочитаете для своих двоичных файлов.

    Конфигурационный файл для jesred: /etc/squid/jesred.conf

    allow = /etc/squid/redirector.acl
    rules = /etc/squid/opensuse-redirect.rules
    redirect_log = /var/log/squid/redirect.log
    rewrite_log = /var/log/squid/rewrite.log
    

    Используя /etc/squid/redirector.acl, вы можете контролировать, запросы каких клиентов должен обрабатывать рерайтер, но я считаю, что это проще контролировать с помощью ACL Squid'а и директивы storeurl_access, поэтому я включаю для всех клиентов:

    # rewrite all URLs from
    0.0.0.0/0
    
  3. /etc/squid/squid.conf

    Конфигурация: добавьте следующие строки в /etc/squid/squid.conf storeurl_rewrite_program /usr/bin/jesred storeurl_rewrite_children 5

    acl metalink req_mime_type application/metalink4+xml
    storeurl_access deny metalink 
    
    storeurl_access allow localnet
    storeurl_access allow localhost
    
    acl localhost src 127.0.0.0/8
    acl localnet src 192.168.0.0/16
    
  4. fetcher206 logfile

    Изменить /etc/squid/squid./conf следующим образом:

    logformat f206 %{%Y-%m-%dT%H:%M:%S}tl %Ss/%03Hs %rm %ru %mt
    access_log /var/log/squid/fetch206.log f206
    

    Этот журнал будет прочитан fetcher206.

    Чтобы он не вырос слишком большим, добавьте следующее в /etc/logrotate.d/:

    /var/log/squid/fetch206.log {
     сжать
     дататекст
     максимальный размер 365
     вращать 5
     размер=+4M
     notifempty
     missingok
     создать 640 squid root
     sharedscripts
     postrotate
     /etc/init.d/squid reload
     endscript
    }
    
  5. squid delay pool

    Это необязательный шаг - в зависимости от доступной пропускной способности канала, вы можете захотеть ограничить то, что используется fetcher206 для получения файлов репозитория. Это предотвратит

    • замедление текущей установки и
    • злоупотребление интернет-соединением

    delay_pools 1
    delay_class 1 1
    delay_access 1 allow localhost
    delay_parameters 1 1000000/1000000
    

    Добавьте вышеуказанное в /etc/squid/squid.conf - это определит один delay_pool, доступный только с localhost (именно там fetcher206 будет запускать wget) с максимальной пропускной способностью 1MByte/sec.

    Если у вас есть другой http/proxy трафик, исходящий с localhost, вы можете просто добавить еще один адрес 127.0.0.x, и использовать его специально для fetcher206.

  6. база данных зеркал

    Нам нужен актуальный список доступных зеркал openSUSE. Его можно получить на сайте mirrors.opensuse.org. Пока что я использую XSL для анализа HTML-страницы, но надеюсь перейти на подходяще отформатированный список непосредственно с MirrorBrain.

    mkdir -p /var/lib/fetcher206
    cp tarball/Makefile.mirrors /var/lib/fetcher206/Makefile
    cp tarball/extract* /var/lib/fetcher206/
    make -C /var/lib/fetcher206
    cp tarball/opensuse_mirrors.cron /etc/cron.d/opensuse_mirrors
    
  7. reload squid

    Когда вы зашли так далеко, пришло время перезагрузить squid с помощью

    squid -k reconfigure
    
  8. fetcher206

    fetcher206 - это, на данный момент, PHP скрипт. Установите его, просто скопировав в /usr/bin. Он имеет несколько жестко заданных опций, таких как количество одновременно запускаемых wgets, имя лог-файла и т.д.

    fetcher206 пока не имеет ни сервисного модуля systemd, ни init-скрипта LSB. На данный момент вы просто запускаете его с помощью:

    startproc -s -q /usr/bin/fetcher206
    

Ссылки

3
22.12.2018, 10:23
1 ответ

Следующий метод работает для меня, чтобы показать только имена файлов и каталогов верхнего уровня,

tar --exclude='./*/*' -tvf ttt.tar.gz

Следующий метод показывает еще один уровень,

tar --exclude='./*/*/*' -tvf ttt.tar.gz

Каталоги перечислены с косой чертой в конце.

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

tar --exclude='*/*' -tvf ttt.tar.gz

только для каталога верхнего уровня и

tar --exclude='*/*/*' -tvf ttt.tar.gz

для еще одного уровня.

16
27.01.2020, 21:17

Теги

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