tar
domyś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.tar
pliku 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 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
opcji tar
będzie archiwizować ścieżki bezwzględnej. Dlatego zawsze warto sprawdzić zawartość dużych archiwów przed rozpakowaniem.