Изменить разрешения для одного файла в файле tar.gz

724
Darth Hunterix

Мне нужно изменить разрешение для одного файла в архиве tar.gz без его распаковки, но я не смог найти никакого способа добиться этого ни на страницах руководства, ни с помощью поиска Google.

Более подробный сценарий:

Мы начинаем на машине Linux с тремя файлами:

[root@localhost tar-test]# ls -l total 0 -rw-r--r--. 1 root root 0 Nov 17 14:41 a.txt -rw-rw-r--. 1 root root 0 Nov 17 14:41 b.txt -rw-r--r--. 1 root root 0 Nov 17 14:41 c.txt 

Затем мы создаем архив tar.gz:

tar cvzf test.tar.gz a.txt b.txt c.txt 

Затем test.tar.gz отправляется на мой компьютер с Windows. Теперь мне нужно изменить права доступа к файлу .txt без извлечения всего архива. У меня есть доступ к MinGW, но не к полноценной машине Linux (виртуальной или физической). Я также не хочу извлекать весь архив. Можно предположить, что я знаю как имя, так и местонахождение файла в архиве.

Решение ограничено инструментами командной строки, так как я собираюсь написать его позже.

3
Просто из любопытства, не могли бы вы изменить разрешение на доступ к файлам в linux перед тем, как сжать его? cascer1 8 лет назад 0
Короче говоря, у меня нет контроля над Linux-частью процесса. Darth Hunterix 8 лет назад 0
Вы пытались извлечь отдельный файл, обновить его разрешения и обновить архив? Не обязательно, что это будет быстрее или интенсивнее, чем извлечение полного архива. Проблема с заархивированными файлами состоит в том, что изменение одного бита полностью изменит архив с той точки, где это изменение закодировано. Лучшее, на что вы могли бы надеяться, - это выполнить 'gunzip' несжатый файл `.tar`, пропатчить его и` gzip` снова, но вам нужно будет найти подробный формат `tar`, чтобы исправить правильную проверку. суммы. AFH 8 лет назад 0
Да, я пробовал это сделать, но поскольку он извлекается в хранилище под управлением Windows, вся информация о разрешениях теряется, и вызов `chmod` ничего не меняет. Я надеялся, что в tar есть какая-то комбинация опций, которая позволит мне решить проблему, и я просто пропустил ее во время поиска. Darth Hunterix 8 лет назад 0

0 ответов на вопрос