Заголовки, содержащие символы подчеркивания, считаются недействительными nginx
, поэтому по умолчанию они не будут передаваться. Поведение может быть переопределено директивой underscores_in_headers
. Например:
underscores_in_headers on;
Дополнительную информацию см. в этом документе .
Я буду использовать опцию --to-command
для запуска печати всех извлеченных файлов
аргумент представляет собой команду, которая будет использовать переменную env TAR _FILENAME для получения имени файла и получит файл наSTDIN
Таким образом, вы должны прочитать STDIN
и создать извлеченный файл, вы можете распечатать на STDOUT
созданный вами файл
tar -xzf../ARCH.tgz --keep-newer-files \
--to-command="sh -c $(printf '%q' \
'mkdir -p "$(dirname "$TAR_FILENAME")";dd of="$TAR_FILENAME" >/dev/null 2>&1;echo "#EXTRACTED#$TAR_FILENAME" ')" > output_tar.txt
и в output_tar.txt
у вас будет строка для каждого извлеченного файла.
см.https://www.gnu.org/software/tar/manual/html_node/Writing-to-an-External-Program.html
В зависимости от моего требования, Иногда мне нужно перечислить все доступные извлеченные файлы соответствует содержимому архива (, независимо от того, новее он или нет ).
В таком случае я могу перечислить эффективно извлеченные файлы, была проведена экстракция смолы (или нет ).
Я делаю так:
tar -xzf./ARCH.tgz --keep-newer-files
for file in $(tar -tf./ARCH.tgz 2>/dev/null)
do
if [[ -e $file && ! -d $file ]]
then
echo $file
fi
done > output_tar.txt
Возможно, менее явное, но краткое решение с использованием xargs:
tar -tf./ARCH.tar 2>/dev/null | xargs -L1 bash -c 'if [[ -e $0 && ! -d $0 ]]; then echo $0; fi;'