Tar katalogu, ale nie przechowuj pełnych ścieżek bezwzględnych w archiwum

Mam następujące polecenie w części skryptu powłoki zapasowej:

tar -cjf site1.bz2 /var/www/site1/

Kiedy wymieniam zawartość archiwum, otrzymuję:

tar -tf site1.bz2
var/www/site1/style.css
var/www/site1/index.html
var/www/site1/page2.html
var/www/site1/page3.html
var/www/site1/images/img1.png
var/www/site1/images/img2.png
var/www/site1/subdir/index.html

Ale chciałbym usunąć tę część/var/www/site1 z katalogu i nazw plików w archiwum, w celu uproszczenia wyodrębniania i uniknięcia bezużytecznej stałej struktury katalogów. Nigdy nie wiem, w przypadku gdybym wyodrębnił kopie zapasowe stron internetowych w miejscu, w którym dane internetowe nie były przechowywane/var/www.

W powyższym przykładzie chciałbym mieć:

tar -tf site1.bz2
style.css
index.html
page2.html
page3.html
images/img1.png
images/img2.png
subdir/index.html

Tak więc, kiedy rozpakowuję, pliki są wyodrębniane w bieżącym katalogu i nie muszę potem przenosić wyodrębnionych plików, a więc struktury podkatalogów są zachowywane.

Istnieje już wiele pytań dotyczących tar i tworzenia kopii zapasowychstackoverflow oraz w innych miejscach w sieci, ale większość z nich prosi o usunięcie całej struktury podkatalogów (spłaszczanie) lub po prostu dodanie lub usunięcie początkowych / w nazwach (nie wiem, co dokładnie zmienia się podczas wyodrębniania), ale nie wiecej.

Po przeczytaniu niektórych rozwiązań znalezionych tutaj i tam, a także instrukcji, próbowałem:

tar -cjf site1.bz2 -C . /var/www/site1/
tar -cjf site1.bz2 -C / /var/www/site1/
tar -cjf site1.bz2 -C /var/www/site1/ /var/www/site1/
tar -cjf site1.bz2 --strip-components=3 /var/www/site1/

Ale żaden z nich nie działał tak, jak chciałem. Niektórzy nic nie robią, inni nie archiwizują już podkatalogów.

Znajduje się w skrypcie kopii zapasowej uruchamianym przez Crona, więc nie wiem dobrze, który użytkownik go uruchamia, jaka jest ścieżka i katalog bieżący, więc zawsze wymagane jest zapisywanie ścieżki bezwzględnej dla wszystkiego i wolałbym nie zmieniać bieżącego katalogu aby uniknąć przerwania czegoś w skrypcie (ponieważ nie tylko tworzy kopie zapasowe stron internetowych, ale także baz danych, a następnie wysyła je na FTP itp.)

Jak to osiągnąć?

Czy właśnie źle zrozumiałem, jak działa opcja -C?

questionAnswers(6)

yourAnswerToTheQuestion