Korzystam z tar -xvf
polecenia i podąża wyraźną ścieżką. Ścieżka jest jednak pełna.
Przykład:
tar -xvf 13.2.tar
To zajmuje ścieżkę /mnt
folderu. /
Folder jest pełny.
Jak mogę tarować plik za pomocą niejawnej ścieżki?
Korzystam z tar -xvf
polecenia i podąża wyraźną ścieżką. Ścieżka jest jednak pełna.
Przykład:
tar -xvf 13.2.tar
To zajmuje ścieżkę /mnt
folderu. /
Folder jest pełny.
Jak mogę tarować plik za pomocą niejawnej ścieżki?
Odpowiedzi:
Zwykle tar
potrzebuje opcji --absolute-names
lub --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 pax
nie 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ą df
polecenia.
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ć, mount
aby 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.