tar
зберігає відносні шляхи за замовчуванням . GNU tar навіть каже так, якщо ви намагаєтесь зберегти абсолютний шлях:
tar -cf foo.tar /home/foo
tar: Removing leading `/' from member names
Якщо вам потрібно витягнути певну папку, подивіться, що знаходиться у файлі tar:
tar -tvf foo.tar
І зверніть увагу на точне ім'я файлу. У випадку з моїм foo.tar
файлом я міг би витягнути /home/foo/bar
, сказавши:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Отже, ні, спосіб, який ви розмістили, не є (обов'язково) правильним способом зробити це. Ви повинні залишити провідну косу рису. Якщо ви хочете імітувати абсолютні шляхи, зробіть cd /
спочатку і переконайтеся, що ви суперперукар. Також це робить те саме:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Є дуже очевидні, вагомі причини, чому tar
перетворює шляхи на відносні. Один - це можливість відновлення архіву в інших місцях, ніж його первісне джерело. Інша - безпека. Ви можете витягнути архів, очікуйте, що його файли з’являться у вашому поточному робочому каталозі, а замість цього помилково перезаписуйте системні файли (або власну роботу) в іншому місці.
Примітка: якщо ви використовуєте цю -P
опцію, tar
буде архівовано абсолютні шляхи. Тому завжди потрібно перевірити вміст великих архівів перед вилученням.