Używam tego polecenia na 5 GB archiwum
tar -zxvf archive.tar.gz /folder/in/archive
Czy to jest właściwy sposób na zrobienie tego? Wydaje się, że trwa to wieczność bez wyjścia wiersza poleceń …
Komentarze
Odpowiedz
tar
przechowuje ścieżki względne domyślnie . GNU tar mówi nawet, że jeśli spróbujesz zapisać ścieżkę bezwzględną:
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
Jeśli chcesz wyodrębnić określony folder, spójrz, co się w nim znajduje plik tar:
tar -tvf foo.tar
I zanotuj dokładną nazwę pliku. W przypadku mojego pliku foo.tar
mógłbym wyodrębnij /home/foo/bar
, mówiąc:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Więc nie, sposób, w jaki publikowałeś, nie jest (koniecznie) prawidłowy sposób na zrobienie tego. Musisz pominąć początkowy ukośnik. Jeśli chcesz symulować ścieżki bezwzględne, najpierw wykonaj cd /
i upewnij się, że jesteś „superużytkownikiem”. Robi to to samo:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Istnieją bardzo oczywiste, dobre powody, dla których tar
konwertuje ścieżki na względne. Jednym z nich jest możliwość przywrócenia archiwum w miejscach innych niż jego oryginalne źródło. innym jest bezpieczeństwo. Możesz wypakować archiwum, oczekiwać, że jego pliki pojawią się w twoim bieżącym katalogu roboczym, a zamiast tego przez pomyłkę nadpisać pliki systemowe (lub własną pracę) w innym miejscu.
Uwaga: jeśli używasz -P
opcja, tar
będzie archiwizować ścieżki bezwzględne. Dlatego zawsze opłaca się sprawdzić zawartość dużych archiwów przed wypakowaniem.
Komentarze
-
--strip-components=N
może być przydatne dla niektórych tutaj. - w moim przypadku konieczne było wpisanie
./foldername/
zamiast , wydaje mi się, że to dlatego, że kiedy utworzyłem tar, utworzyłem go za pomocątar -cvf santi.tar ./*
i kiedy " wymieniony " tar, oto co powiedziałdrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- I o
.gz
? - @PeterKrauss zmień
-xvf
na-xzvf
(dodając-z
) i oczywiściefoo.tar
dofoo.tar.gz
lub jakkolwiek nazywa się twoje archiwum. To samo dotyczy-j
(bz2) i niektórych ostatnich wersji,-J
(xz). W przeciwnym razie działa również potok taki jakzcat foo.tar.gz | tar -xvf - …
. - I pamiętaj, że jeśli masz dość szczegółowych informacji wyjściowych podczas wyodrębniania, po prostu pomiń
v
we wszystkich przykładach. Np.tar -tf foo.tar
itar -xf foo.tar ...
.
tar
znajduje sięcat /proc/$(pidof tar)/fdinfo/0
(dostosuj polecenie, jeśli masz więcej niż jednotar
proces w toku).folder/folder2/
won ' t działa.