Использование регулярного выражения с командой zip для исключения каталогов

Разрешение DNS через Socks зависит от клиента. Вы должны явно указать приложению искать DNS через Socks.

Разрешение имен, как и подключение к хосту, выполняется с помощью системных вызовов, таких какgethostbyname()или getaddrinfo().

Если не указано иное, программа может просто использовать эту функцию для разрешения имен, которая, конечно же, не знает о вашем туннеле.

Например, curl выполняет поиск DNS только при указании socks5h://, а не только socks5://.

1
18.01.2020, 14:59
2 ответа

Я бы предложил создать архив в два этапа:

  1. Создайте архив, исключив все, что хотите исключить:

    zip -r application.zip. -x 'vendor/*' 'node_modules/*' '.git/*'.env 'public/assets/images/*'
    
  2. Добавьте в тот же архив одну папку, которую вы хотите включить из исключенного каталога:

    zip -r application.zip public/assets/images/icons/
    

(поведение по умолчанию zipзаключается в добавлении файлов в существующий архив, если он уже существует)

2
27.01.2020, 23:22

Попробуйте ввести следующую команду

find /www \( -path "*/public/assets/images/*" -a  \( ! -path "*/public/assets/images/icons" -a ! -path "*/public/assets/images/icons/*" \) \) -o \( -path "*/.git*" \) -o \( -path "*/vendor*" \) -o \( -path "*/node_modules*" \) -prune -o \( ! -name ".env" \) -exec zip www.zip {} +

Пояснение

Первое выражение, которое начинается после /wwwи заканчивается параметром -prune, указывает, что каталоги .git, vendor, node_modulesи public/assets/images, кроме public/assets/images/icons, должны игнорироваться find.

! -name ".env"указывает find игнорировать файлы с именем.env

-exec zip www.zip {} +запускает команду zipдля выбранных файлов, но командная строка строится путем добавления имени каждого выбранного файла в конец; общее количество вызовов команды будет намного меньше, чем количество совпадающих файлов. Результат сохраняется в файле www.zip.

1
27.01.2020, 23:22

Теги

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