Я хочу заархивировать каталог X, не включая его родительские каталоги

Я хочу заархивировать каталог X, не включая его родительские каталоги
tar cvf /var/lib/backup/sample.tar /home/user/.project

Однако, когда я извлекаю, я также получаю его родителей.

/backup/
  - /home/
     - /user/
        - .project/

Эта команда tar выполняет свою работу, потому что она не включает в себя ничего другого в своих родительских папках ( userнапример, другие папки).

Я хочу сделать это программно, поэтому смена текущего рабочего каталога /home/user/на не совсем вариант. Возможно ли это сделать?

решение1

Вы можете либо воспользоваться -Cопцией смены каталога /home/userперед архивированием, либо использовать --strip-components 2ее при извлечении.

tar cvfC /var/lib/backup/sample.tar /home/user .project
#                              Note the space ^
tar cvf /var/lib/backup/sample.tar /home/user/.project
tar Cxf /backup /var/lib/backup/sample.tar --strip-components 2

решение2

Я думаю, что если вы cdперейдете в каталог верхнего уровня, в котором вы хотите создать tarфайл, у вас не должно возникнуть этой проблемы. То есть,

cdto userи tarup .project.. вы можете указать место назначения для tar-файла, как /var/... и раньше.

Или есть причина, по которой вы не хотите/не можете cdэтого сделать user?

Связанный контент