GNU tar(1)
ma ciekawą opcję o nazwie --transform
. Ze strony podręcznika:
--transform, --xform EXPRESSION
użyj sed replace EXPRESSION do transformacji nazw plików
Umożliwia to przekształcanie nazw ścieżek w locie podczas rozpakowywania archiwum, abyś mógł kontrolować, gdzie i jak zostanie on rozpakowany.
Moje pytanie brzmi: czy istnieje sposób przeprowadzenia podobnej transformacji in situ ; tzn. bez rozpakowywania archiwum?
Przykład
[user@host]$ tar tf test.tar
./foo/blah ./foo/bleh
[user@host]$ some_deep_magic 's/foo/bar/' test.tar
[user@host]$ tar tf test.tar
./bar/blah ./bar/bleh
Przypadek użycia
Dystrybuuję tar
archiwum w zasadzie dla użytkowników końcowych, którzy nie mają pojęcia, i chciałbym, aby wyodrębnił je na właściwą ścieżkę bez ingerencji ode mnie. Staram się unikać trywialnego rozwiązania wypakowywania archiwum, zmiany nazw katalogów i przepakowywania, ponieważ archiwum jest duże.