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
файл, у вас не должно возникнуть этой проблемы. То есть,
cd
to user
и tar
up .project
.. вы можете указать место назначения для tar-файла, как /var/...
и раньше.
Или есть причина, по которой вы не хотите/не можете cd
этого сделать user
?