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=Nmoż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ń
-xvfna-xzvf(dodając-z) i oczywiściefoo.tardofoo.tar.gzlub 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ń
vwe wszystkich przykładach. Np.tar -tf foo.taritar -xf foo.tar ....
tarznajduje sięcat /proc/$(pidof tar)/fdinfo/0(dostosuj polecenie, jeśli masz więcej niż jednotarproces w toku).folder/folder2/won ' t działa.