Разрешение DNS через Socks зависит от клиента. Вы должны явно указать приложению искать DNS через Socks.
Разрешение имен, как и подключение к хосту, выполняется с помощью системных вызовов, таких какgethostbyname()
или getaddrinfo()
.
Если не указано иное, программа может просто использовать эту функцию для разрешения имен, которая, конечно же, не знает о вашем туннеле.
Например, curl выполняет поиск DNS только при указании socks5h://
, а не только socks5://
.
Я бы предложил создать архив в два этапа:
Создайте архив, исключив все, что хотите исключить:
zip -r application.zip. -x 'vendor/*' 'node_modules/*' '.git/*'.env 'public/assets/images/*'
Добавьте в тот же архив одну папку, которую вы хотите включить из исключенного каталога:
zip -r application.zip public/assets/images/icons/
(поведение по умолчанию zip
заключается в добавлении файлов в существующий архив, если он уже существует)
Попробуйте ввести следующую команду
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
.