Extraindo o conteúdo do arquivo tar para o problema do diretório pai, resultando na criação de subdiretórios

2

Eu tenho um arquivo Tar: testwebsite.tar

Eu coloquei no diretório que eu gostaria de extrair o seu conteúdo para o meu servidor Web, que é mytestdirectory

Eu executo este comando via PuTTY: tar -xvf testwebsite.tar

O que resulta no conteúdo extraído, mas neste formato:

mytestdirectory/srv/test/www.testwebsite.com/

Todos os arquivos que gostaria que aparecessem em mytestdirectory estão contidos no diretório www.testwebsite.com sub.

Existe uma maneira de mover todo o conteúdo desse subdiretório para o diretório pai usando o comando mv ?

Eu estava procurando e tentei algumas respostas, uma delas para executar esse comando no subdiretório:

mv * .[^.]* ..

Mas isso resultou na exibição dessa mensagem:

mv: cannot stat '*': No such file or directory
mv: cannot stat '.[^.]*': No such file or directory

Alguém poderia me ajudar neste problema, estou basicamente tentando mover todo o conteúdo (incluindo arquivos ocultos) do subdiretório www.testwebsite.com para o mytestdirectory do diretório pai.

    
por Javacadabra 13.03.2015 / 12:57

1 resposta

3

Você precisa usar a opção --strip-components do tar; isso é porque os caminhos que você não precisa estão contidos no arquivo tar.

Então, por exemplo, se o tar contiver isto: srv/test/www.testwebsite.com/index.html e você deseja obter esse mytestdirectory/index.html , você precisa

$ cd /path/to/mytestdirectory
$ tar xf testwebsite.tar --strip-components=3 

Se você usar o comando verbose, ainda configurará os nomes de arquivos originais completos, para que também possa adicionar o argumento --show-transformed para listar os caminhos modificados:

$ tar tfz workspace.tar.gz --strip-components=2 workspace/project
-rw-rw-r-- guido/guido   11134 2009-01-22 23:21 workspace/project/aaa
-rw-rw-r-- guido/guido   11134 2009-01-22 23:21 workspace/project/bbb
[... list continues ...]
$ tar tfz workspace.tar.gz --strip-components=2 --show-transformed workspace/project
-rw-rw-r-- guido/guido   11134 2009-01-22 23:21 aaa
-rw-rw-r-- guido/guido   11134 2009-01-22 23:21 bbb
[ ... and so on ...]

Para corrigir sua situação com mv , seria:

# cd /path/to/mytestdirectory 
# mv srv/test/www.testwebsite.com/* .

Por cuidar de arquivos ocultos, uma lição será esta:

# shopt -s dotglob

executado antes dos comandos acima, para o glob também corresponder a dotfiles; ou melhor ainda, exclua seu diretório de destino atual, mova e renomeie o que você deseja copiar:

[ delete or rename current /path/to/mytestdirectory ]
# cd /path/to
# mv srv/test/www.testwebsite.com/ mytestdirectory/
# rmdir srv/test/ srv/
    
por 13.03.2015 / 13:25