Extrai arquivos de link físico com tar

1

Eu estou tentando obter lista de todos os arquivos na pasta tar mostrar todos eles em uma página com links para baixar arquivos. Ao clicar em arquivos únicos, ele será baixado. Isso tudo está funcionando bem, exceto os arquivos de link físico

comando que eu uso para extrair arquivo único é

tar --extract --file=abc.tar.xz abc.file

mas se o arquivo é link duro, isso me dá um erro, existe uma maneira de obter um arquivo de link físico?

    
por Vikram Singh 13.06.2016 / 15:38

1 resposta

7

O problema está em como o tar armazena arquivos. Então, por exemplo

$ echo hello > a
$ ln a b
$ tar cf foo.tar a b
$ tar tf foo.tar
a
b

O problema acontece quando você tenta extrair apenas um arquivo

$ mkdir Y
$ cd Y
$ tar xvf ../foo.tar b
b
tar: b: Cannot hard link to 'a': No such file or directory
tar: Exiting with failure status due to previous errors

O que você precisa fazer é olhar para a lista de conteúdo detalhada mostra

$ tar tvf foo.tar 
-rw-r--r-- sweh/sweh         6 2016-06-13 10:43 a
hrw-r--r-- sweh/sweh         0 2016-06-13 10:43 b link to a

Agora você pode ver que "b" tem comprimento zero, tem o tipo "h" (primeiro caractere) e é sinalizado como "link para". Isso informa o arquivo real que você precisa extrair.

Neste caso, você pode querer usar a opção "O" (enviar para stdout), então você acabaria fazendo tar Oxvf ../foo.tar a > b para criar um arquivo com o nome certo.

    
por 13.06.2016 / 16:49

Tags