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?