Czy użyłeś ścieżki bezwzględnej lub względnej? Powinien być względny, poza tym wygląda dobrze. Jak długo pozwoliłeś mu działać i jak dobry jest twój system? Szybka maszyna zajmie co najmniej kilka minut. Potencjalnie godzinę lub dłużej? Teraz przeprowadzam test.
Kevin
Tak, zakończyło się po ~ 1 godzinie, ale absolutna ścieżka była zła, miałeś rację.
Garrett Hall
5
W systemie Linux, można obserwować, jak daleko w archiwum tarjest z cat /proc/$(pidof tar)/fdinfo/0(dostosować komendy, jeśli masz więcej niż jeden tarbieg procesu).
Gilles
Ważną częścią jest również brak końcowego cięcia. Korzystanie folder/folder2/nie działa.
Marki555
Odpowiedzi:
145
tardomyślnie przechowuje ścieżki względne . GNU tar nawet tak mówi, 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 na zawartość pliku tar:
tar -tvf foo.tar
I zanotuj dokładną nazwę pliku. W przypadku mojego foo.tarpliku mogę wyodrębnić /home/foo/bar, mówiąc:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Więc nie, sposób, w jaki napisałeś, nie jest (koniecznie) prawidłowym sposobem na zrobienie tego. Musisz pominąć wiodący ukośnik. Jeśli chcesz symulować ścieżki bezwzględne, zrób to cd /najpierw i upewnij się, że jesteś superużytkownikiem. To samo robi to samo:
tar -C /-xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Istnieją bardzo oczywiste, dobre powody, dla których tarzamienia ścieżki na względne. Jedną z nich jest możliwość przywrócenia archiwum w miejscach innych niż oryginalne źródło. Drugi to bezpieczeństwo. Możesz wyodrębnić archiwum, oczekiwać, że jego pliki pojawią się w bieżącym katalogu roboczym, i zamiast tego przez pomyłkę zastąpić pliki systemowe (lub własną pracę) w innym miejscu.
Uwaga: W przypadku korzystania z -Popcji tarbędzie archiwizować ścieżki bezwzględnej. Dlatego zawsze warto sprawdzić zawartość dużych archiwów przed rozpakowaniem.
--strip-components=Nmogą być przydatne niektórym tutaj.
Acumenus
2
w moim przypadku konieczne było napisanie ./foldername/zamiast foldername, wydaje mi się, że było tak, ponieważ kiedy stworzyłem smołę, stworzyłem ją, tar -cvf santi.tar ./*a kiedy „wymieniłem” smołę, oto, co napisanodrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
santiago arizti
1
Io .gz?
Peter Krauss,
1
@PeterKrauss zmieni się -xvfna -xzvf(dodanie -zopcji) i oczywiście foo.tarna foo.tar.gzlub jakkolwiek się nazywa twoje archiwum. To samo dotyczy -j(bz2) i niektórych najnowszych wersji -J(xz). W przeciwnym razie zcat foo.tar.gz | tar -xvf - …działa również taki potok .
Alexios
I pamiętaj, jeśli jesteś zmęczony wyczerpującą produkcją podczas ekstrakcji, po prostu pomiń vwszystkie przykłady. Na przykład, tar -tf foo.tari tar -xf foo.tar ....
tar
jest zcat /proc/$(pidof tar)/fdinfo/0
(dostosować komendy, jeśli masz więcej niż jedentar
bieg procesu).folder/folder2/
nie działa.Odpowiedzi:
tar
domyślnie przechowuje ścieżki względne . GNU tar nawet tak mówi, jeśli spróbujesz zapisać ścieżkę bezwzględną:Jeśli chcesz wyodrębnić określony folder, spójrz na zawartość pliku tar:
I zanotuj dokładną nazwę pliku. W przypadku mojego
foo.tar
pliku mogę wyodrębnić/home/foo/bar
, mówiąc:Więc nie, sposób, w jaki napisałeś, nie jest (koniecznie) prawidłowym sposobem na zrobienie tego. Musisz pominąć wiodący ukośnik. Jeśli chcesz symulować ścieżki bezwzględne, zrób to
cd /
najpierw i upewnij się, że jesteś superużytkownikiem. To samo robi to samo:Istnieją bardzo oczywiste, dobre powody, dla których
tar
zamienia ścieżki na względne. Jedną z nich jest możliwość przywrócenia archiwum w miejscach innych niż oryginalne źródło. Drugi to bezpieczeństwo. Możesz wyodrębnić archiwum, oczekiwać, że jego pliki pojawią się w bieżącym katalogu roboczym, i zamiast tego przez pomyłkę zastąpić pliki systemowe (lub własną pracę) w innym miejscu.Uwaga: W przypadku korzystania z
-P
opcjitar
będzie archiwizować ścieżki bezwzględnej. Dlatego zawsze warto sprawdzić zawartość dużych archiwów przed rozpakowaniem.źródło
--strip-components=N
mogą być przydatne niektórym tutaj../foldername/
zamiastfoldername
, wydaje mi się, że było tak, ponieważ kiedy stworzyłem smołę, stworzyłem ją,tar -cvf santi.tar ./*
a kiedy „wymieniłem” smołę, oto, co napisanodrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
.gz
?-xvf
na-xzvf
(dodanie-z
opcji) i oczywiściefoo.tar
nafoo.tar.gz
lub jakkolwiek się nazywa twoje archiwum. To samo dotyczy-j
(bz2) i niektórych najnowszych wersji-J
(xz). W przeciwnym raziezcat foo.tar.gz | tar -xvf - …
działa również taki potok .v
wszystkie przykłady. Na przykład,tar -tf foo.tar
itar -xf foo.tar ...
.