Como extrair arquivos para o diretório “/ usr” sem sobrescrever outros arquivos?

2

Eu faço o download do pacote de instalação swift e o extraio em meu diretório pessoal:

# tar -C / -xvf swift-2.2.1-RELEASE-ubuntu14.04.tar.gz
swift-2.2.1-RELEASE-ubuntu14.04/usr/
swift-2.2.1-RELEASE-ubuntu14.04/usr/include/
swift-2.2.1-RELEASE-ubuntu14.04/usr/include/lldb/
......

O layout final de swift-2.2.1-RELEASE-ubuntu14.04 gosta disso:

# tree -d -L 2
.
└── usr
    ├── bin
    ├── include
    ├── lib
    └── share

5 directories

Eu quero extrair os arquivos para o diretório /usr diretamente e não sobrescrever outros arquivos, existe algum método?

    
por Nan Xiao 05.05.2016 / 10:42

2 respostas

1

A menos que seja um pacote fornecido pelo fornecedor que se integre ao gerenciador de pacotes do SO, você não deve extraí-lo nesse local. Por favor, vá para / opt e extraia-o lá por exemplo e configure suas variáveis de ambiente como mostrado no download página para o Swift. Ao fazer uma extração completa em / opt , que está lá para aplicativos de terceiros, você também pode alternar rapidamente entre as versões apenas alterando suas variáveis de ambiente.

    
por 05.05.2016 / 11:04
0

Ao extrair arquivos, se o tar descobrir que o arquivo extraído já existe, ele normalmente substitui o arquivo removendo-o antes de extraí-lo, para evitar confusão na presença de links físicos ou simbólicos. (Se o arquivo existente for um link simbólico, ele será removido, não seguido.) No entanto, se um diretório não puder ser removido porque não está vazio, o tar normalmente substitui seus metadados (propriedade, permissão, etc.). A opção --overwrite-dir ativa esse comportamento padrão. Para ser mais cauteloso e preservar os metadados de tal diretório, use a opção --no-overwrite-dir .

Para ser ainda mais cauteloso e impedir a substituição de arquivos existentes, use a opção --keep-old-files (-k) . Isso faz com que o tar se recuse a substituir ou atualizar um arquivo que já existe, ou seja, um arquivo com o mesmo nome de um membro do arquivo impede a extração desse membro do arquivo. Em vez disso, ele informa um erro. Por exemplo:

$ ls
blues
$ tar -x -k -f archive.tar
tar: blues: Cannot open: File exists
tar: Exiting with failure status due to previous errors
    
por 05.05.2016 / 10:57

Tags