smoła ze ścieżkami względnymi

24

Próbuję utworzyć archiwum z tar za pomocą ścieżek względnych. Używam następującego polecenia:

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

Ale zarchiwizowane pliki nadal mają bezwzględne ścieżki. Jak mogę używać tar ze ścieżkami względnymi?

Mert Nuhoglu
źródło
powiązane: stackoverflow.com/questions/18681595/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Odpowiedzi:

24

„~” jest rozszerzane przez powłokę. Nie używaj „~” z -C:

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

(tar będzie zawierać webapps / zers / wp-content / plugins / my-page-path path) lub

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

(tar będzie zawierać ścieżkę zamówienia mojej strony)

Lub po prostu cd ...

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order
symcbean
źródło
2
Wyjaśnienie jest błędne. Nie ma znaczenia, że ~ jest rozszerzane przez powłokę. Liczy się to, że -Czmienia bieżący katalog roboczy, jak wyjaśniono w anwer przez Lekensteyn.
Piotr Dobrogost
1
Nie - spójrz na oryginalne pytanie - ostatni argument jest ścieżką bezwzględną.
symcbean
Więc co? Oba wystąpienia ~ są rozwinięte i całe wywołanie nie działa zgodnie z oczekiwaniami tylko dlatego, że ostatni argument w przypadku użycia -Cpowinien być podany jako ścieżka względna, ale zamiast tego jako ścieżka bezwzględna. Używanie ~ tutaj nie ma żadnego znaczenia.
Piotr Dobrogost
11

-C new_cwdzmienia bieżący katalog roboczy na new_cwd. Następujące argumenty są następnie oceniane względem new_cwd.

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

Lekensteyn
źródło
4

Rozwiązanie inne niż GNU, jeśli tarnie ma -zopcji, aby wspomnieć:

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

EDYCJA (zi &&bez rm):

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd
Mattia72
źródło
(1) Pytanie nie mówi nic rm; dlaczego włączasz to do swojej odpowiedzi? (2) Twoja odpowiedź archiwizuje niewłaściwy katalog. (3) Dlaczego zmieniłeś się tar -zna tar | gzip? (4) Tak długo, jak zamierzasz używać &&, prawdopodobnie powinieneś używać także &&po pushd.
G-Man mówi „Przywróć Monikę”
(1) Masz rację (2) naprawdę? Który jest dobry? (3) o to chodzi: wersja tar non-GNU (np. Na Unixie), nie ma -z (4) Prawdopodobnie &&
użyłbym
(2) OP chce archiwizować ~/webapps/zers/wp-content/plugins/my-page-orderz wyjściem do ~/files/wp/my-page-order.tar.gz; twoje archiwa poleceń ~/files/wp/my-page-order. (3) Dziękujemy za edycję odpowiedzi w celu wyjaśnienia, dlaczego użyłeś gzip.
G-Man mówi „Reinstate Monica”