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?
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?
Odpowiedzi:
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.
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.
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).
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.