дьоготь з відносними шляхами


24

Я намагаюся створити архів з tar, використовуючи відносні шляхи. Я використовую таку команду:

tar czf ~/files/wp/my-page-order.tar.gz -C ~/webapps/zers/wp-content/plugins/ ~/webapps/zers/wp-content/plugins/my-page-order

Але архівовані файли все ще мають абсолютні шляхи. Як можна використовувати дьоготь з відносними шляхами?


Відповіді:


24

'~' розширюється оболонкою. Не використовуйте "~" з -С:

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~ \
       webapps/zers/wp-content/plugins/my-page-order

(tar включатиме webapps / zers / wp-content / plugins / шлях моєї сторінки на замовлення) або

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~/webapps/zers/wp-content/plugins \
       my-page-order

(тар включатиме шлях замовлення на мою сторінку)

Або просто cd спочатку ....

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order

2
Пояснення неправильне. Тут не важливо, що ~ розширюється оболонкою. Важливим є те , що -Cзмінює поточний робочий каталог , як описано в Anwer по Lekensteyn.
Пьотр Доброгост

1
Ні - подивіться на початкове запитання - останній аргумент - абсолютний шлях.
symcbean

І що? Обидва екземпляри ~ розгортаються, і вся виклик не працює, як очікувалося, лише тому, що останній аргумент у разі використання -Cповинен був бути наведений як відносний шлях, а натомість поданий як абсолютний шлях. Використання ~ тут зовсім не має значення.
Пьотр Доброгост

11

-C new_cwdзмінює поточний робочий каталог на new_cwd. Наступні аргументи оцінюються відносно new_cwd.

tar czf ~ / files / wp / my-page-order.tar.gz -C ~ / webapps / zers / wp-content / plugins / my-page-order


4

Рішення, яке не стосується GNU, якщо tarне має -zможливості, просто зазначимо:

pushd ~/files/wp; tar cvf - my-page-order | gzip > my-page-order.tar.gz && rm -rf my-page-order; popd

EDIT (з &&і без rm):

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd

(1) Питання нічого не говорить про це rm; чому ви включаєте це у свою відповідь? (2) Ваша відповідь архівує неправильний каталог. (3) Чому ви змінили tar -zв tar | gzip? (4) Поки ви збираєтесь використовувати &&, ви, ймовірно, повинні використовувати і &&після pushd.
G-Man каже "Відновити Моніку"

(1) Ти маєш рацію (2) насправді? Який хороший? (3) в цьому справа: у GNU-версії tar (наприклад, на Unix) немає -z (4) я б використовував, мабуть, &&сценарій, але, думаю, це не потрібно в "одному вкладиші"
Mattia72

(2) ОП хоче архівувати ~/webapps/zers/wp-content/plugins/my-page-orderз виходом до ~/files/wp/my-page-order.tar.gz; ваші архіви команд ~/files/wp/my-page-order. (3) Дякуємо, що відредагували свою відповідь, щоб пояснити, чому ви використовували gzip.
G-Man каже: "Відновіть Моніку"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.