Jak korzystać z komendy tar systemu Unix z niejawną ścieżką pliku?

9

Korzystam z tar -xvfpolecenia i podąża wyraźną ścieżką. Ścieżka jest jednak pełna.
Przykład:

tar -xvf 13.2.tar

To zajmuje ścieżkę /mntfolderu. /Folder jest pełny.

Jak mogę tarować plik za pomocą niejawnej ścieżki?

Anthon
źródło
Powinieneś wyraźnie wyjaśnić, co dokładnie się dzieje, ponieważ twój obecny sposób zadawania pytań sprawia, że ​​nawet najbardziej wyrafinowana kryształowa kula wydaje się nieco zamglona.

Odpowiedzi:

2

Zwykle tarpotrzebuje opcji --absolute-nameslub --absolute-paths, aby zachować '/'część główną podczas tworzenia archiwum. Nawet jeśli wymusisz to w ten sposób, ekstrakt pominie również prowadzenie '/'.


Jednak jeśli masz archiwum z wiodącym '/'i tar nie pomija go podczas wypakowywania, odpowiedź NoahD powinna działać w tej formie,

pax -r -s ',/mnt,/new/path,' -v -f 13.2.tar

Wydaje mi się, że paxnie obsługuje skompresowanych plików, więc po rozpakowaniu będziesz musiał zainstalować potoki pax.
Tak by było (zakładając, że masz spakowane archiwum)

gunzip -c 13.2.tar.gz | pax -r -s ',/mnt,/new/path,' -v

Właśnie znalazłem tę stronę wiki w Google.

nik
źródło
2

Różnica między używaniem kanonicznym (czyli jawnym) a względnym (co prawdopodobnie nazywasz niejawnym) polega na tym, czy używasz /na początku.

Na przykład, jeśli bieżącym katalogiem roboczym jest /usr/home/bob, następujące polecenia mają dokładnie taki sam efekt

tar -xvf foo.tar *
tar -xvf ./foo.tar *
tar -xvf ./foo.tar ./*
tar -xvf /usr/home/bob/foo.tar *
tar -xvf /usr/home/bob/foo.tar ./*
tar -xvf /usr/home/bob/foo.tar / usr / home / bob / *

Ale podejrzewam, że to nie jest twoje pytanie. Wydaje się bardziej, że musisz określić użycie dysku i zlokalizować katalog, który nie jest pełny. Można to zrobić za pomocą dfpolecenia.

df -k # space on disk in kilobytes
df -m # as above, but in meg
df -g # as above, but in gig

I możesz użyć, mountaby pokazać, jakie systemy plików są zamontowane na jakich urządzeniach.

Anthon
źródło
0

Aby utworzyć plik tar ze ścieżką względną,

cd /parent/of/dir/to/tar
tar cvf subdir.tar subdir

Aby rozpakować tar do określonego katalogu innego niż bieżący katalog roboczy, użyj przełącznika -C (wielkie litery C).

Jeśli chcesz rozpakować plik z bezwzględnymi nazwami ścieżek do punktu innego niż root, być może będziesz musiał się z tym pogubić chroot(1).

robc
źródło
0

Wierzę, że pax załatwi sprawę

pax -r -s, / mnt, / gooddir, -f 13.2.tar

Powinno to umożliwić zastąpienie w nowym katalogu głównym.

Anthon
źródło