Eu quero tar o diretório X não incluindo seus pais


9
tar cvf /var/lib/backup/sample.tar /home/user/.project

No entanto, quando extraio, recebo seus pais também

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

Esse comando tar funciona porque não inclui mais nada em seus pais (outras pastas em, userpor exemplo).

Eu quero fazer isso programaticamente, portanto, alterar o diretório de trabalho atual para /home/user/não é realmente uma opção. É possível fazer isso?

Respostas:


17

Você pode usar a -Copção de mudar para o /home/userdiretório antes de tarar ou usar --strip-components 2na extração.

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

11
+1 legal .. Acabei de encontrar o -Cinterruptor quando estava olhando a página de manual , mas não conseguia entender o significado .. parecia-me mais como se fosse usado durante o desarme. Aprendeu algo novo.
Levon

@ Kevin Obrigado. A opção C funciona perfeitamente. Obrigado!
User007

2
Eu não conseguia fazê-lo funcionar assim. De acordo com a leitura gnu.org/software/tar/manual/tar.html#SEC118 , obtive sucesso com o seguinte formato: tar cvf /var/lib/backup/sample.tar -C / home / user .project
Aivar

2

Eu acho que se você estiver cdno diretório de nível superior em que deseja criar o tararquivo, não deverá ter esse problema. Ou seja,

cdpara usere para tarcima .project.. você pode especificar o destino para o arquivo tar no /var/... como antes.

Ou há uma razão que você não quer / não pode cda user?


Sim. Essa seria uma solução. Obrigado. Mas espero que exista uma maneira melhor? Quero lidar com esse aliado programático e não quero emitir os.chdir(base_dir)meu código o tempo todo :) por isso seria bom se houvesse uma maneira de sair disso. Graças
User007

@ User007 Ah .. ok, entendi. Você pode atualizar sua pergunta para incluir esse requisito. ID de usuário agradável pela maneira :)
Levon

Obrigado. Sim. Acabei de atualizar minha pergunta. Ah, é para esconder minha identidade ...
User007

11
@ User007 amo a parte 007 .. e parece que você está trabalhando em Python também (que é outro de meus favoritos)
Levon

:) Sim. Tudo bem, nosso amigo Kevinme ajudou com o comando certo. Então eu vou dar a ele o sinal. Mas eu votei em você. Obrigado!
User007
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.