Estou usando este comando em um 5 GB arquivo
tar -zxvf archive.tar.gz /folder/in/archive
esta é a maneira correta de fazer isso? Parece estar demorando uma eternidade sem saída de linha de comando …
Comentários
Resposta
tar
armazena caminhos relativos por padrão . GNU tar até diz isso se você tentar armazenar um caminho absoluto:
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
Se você precisar extrair uma pasta específica, dê uma olhada no que está dentro o arquivo tar:
tar -tvf foo.tar
E observe o nome do arquivo exato. No caso do meu arquivo foo.tar
, eu poderia extraia /home/foo/bar
dizendo:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
Portanto, não, a maneira como você postou não é (necessariamente) a correta maneira de fazer isso. Você tem que deixar de fora a barra inicial. Se você deseja simular caminhos absolutos, faça cd /
primeiro e certifique-se de que é o superusuário. Além disso, faz o mesmo:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
Existem boas e óbvias razões pelas quais tar
converte caminhos em caminhos relativos. Uma é a capacidade de restaurar um arquivo em locais diferentes de sua fonte original. outra é a segurança. Você pode extrair um arquivo, esperar que seus arquivos apareçam em seu diretório de trabalho atual e, em vez disso, sobrescrever arquivos de sistema (ou seu próprio trabalho) em outro lugar por engano.
Nota: se você usar o -P
opção, tar
irá arquivar caminhos absolutos. Por isso, sempre vale a pena verificar o conteúdo de grandes arquivos antes de extrair.
Comentários
-
--strip-components=N
pode ser útil para alguns aqui. - no meu caso, foi necessário escrever
./foldername/
em vez de , acho que foi porque quando criei o tar, eu o criei comtar -cvf santi.tar ./*
e quando " listou " o alcatrão, é o que está escritodrwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
- E sobre
.gz
? - @PeterKrauss altere
-xvf
para-xzvf
(adicionando o-z
) e obviamentefoo.tar
afoo.tar.gz
ou qualquer que seja o nome do seu arquivo. O mesmo se aplica a-j
(bz2) e em algumas versões recentes,-J
(xz). Caso contrário, um pipeline comozcat foo.tar.gz | tar -xvf - …
também funciona. - E lembre-se, se você está cansado de toda a saída detalhada durante a extração, basta ignorar
v
em todos os exemplos. Por exemplo,tar -tf foo.tar
etar -xf foo.tar ...
.
tar
comcat /proc/$(pidof tar)/fdinfo/0
(adapte o comando se tiver mais de umtar
processo em execução).folder/folder2/
ganhou ' t trabalho.