как предотвратить изменение прав доступа к текущему каталогу с помощью «извлечения tar»?

Предполагая, что вы хотите дать процессу переменную окружения со значением, которое может отличаться от значения переменной оболочки с тем же именем, которая может находиться в области действия оболочки в момент вызова команда:

a () {
    YACY_TIMEOUT=60 yacy -r -d std
}

Это стандартный синтаксис для запуска команды и присвоения ей определенного значения переменной среды. Переменная YACY_TIMEOUT, если она существует в той же области, что и тело функции a, не будет изменена.

Это будет работать в любой оболочке POSIX.

Что это , а не делает, так это позволяет вам использовать YACY_TIMEOUTс "локальным" значением внутри функции перед вызовом yacy.

В zshили любой другой оболочке, которая поддерживает локальные переменные, объявленные с помощью local, вы можете сделать

a () {
    local YACY_TIMEOUT=60

    YACY_TIMEOUT=$YACY_TIMEOUT yacy -r -d sth
}

Здесь YACY_TIMEOUTбудет локальным по отношению к функции a. Внедрение переменной в качестве переменной среды в процесс yacyпроисходит так же, как и в первом приведенном мной примере, путем предшествующего вызова присваивания.

Теперь YACY_TIMEOUTявляется одновременно локальным и доступным в среде процесса yacy. Это будет работать в любой оболочке, поддерживающей использование localдля объявления локальных переменных.

0
15.09.2021, 08:54
1 ответ

Насколько мне известно, единственный способ предотвратить изменения метаданных .при извлечении архива — это пропустить существующие файлы с опцией --skip-old-files, доступной в GNU tar. Это охватывает более .и приведет к тому, что любые существующие файлы будут сохранены как -, а не перезаписаны версией в архиве.

Я не знаю, почему ваш --transformне работает. Рекомендуемый подход к добавлению пути при извлечении заключается в «замене» начальной привязки на нужный каталог, , например.tar --transform 's,^,foobar/,'.... Чтобы избежать путаницы с символическими ссылками, можно добавить суффикс, , например. tar --transform 's,^,foobar/,S', который не применит преобразование к целям символической ссылки.

1
15.09.2021, 10:25

Теги

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