Criando um arquivo tar usando remover arquivos e excluir

2

Eu tenho a seguinte estrutura de diretórios e arquivos:

test:
total 16
drwxr-xr-x 2 db2root1 db2iadm1 4096 Jan 18 16:52 archive
-rw-r--r-- 1 db2root1 db2iadm1   34 Jan 18 16:38 file1.txt
-rw-r--r-- 1 db2root1 db2iadm1   34 Jan 18 16:38 file2.txt
drwxr-xr-x 2 db2root1 db2iadm1 4096 Jan 18 17:04 subdir

test/archive:
total 0

test/subdir:
total 4
-rw-r--r-- 1 db2root1 db2iadm1 34 Jan 18 16:38 file3.txt

Agora, quero criar um arquivo tar no archive de diretório sem o archive de diretório e o arquivo file1.txt com o seguinte comando:

tar --remove-files --exclude file1.txt --exclude archive -cvzf /test/archive/test.tar.gz /test

Eu coloquei as opções --exclude e --remove-files em lugares diferentes, mas sempre recebo a seguinte mensagem de erro:

tar: Removing leading '/' from member names
/test/
/test/subdir/
/test/subdir/file3.txt
/test/file2.txt
tar: /test: Cannot rmdir: Directory not empty
tar: Exiting with failure status due to previous errors

Como posso evitar o erro em relação ao diretório base / teste?

    
por Cyberider 18.01.2017 / 17:23

2 respostas

1
( cd /test; tar --remove-files --exclude file1.txt --exclude archive -cvzf archive/test.tar.gz * )

O truque é cd no diretório e, em seguida, tar * ; o subshell impedirá que o cd tenha qualquer efeito no shell de nível superior.

    
por 18.01.2017 / 17:34
0

Você está tentando usar o --remove-files , que removerá os arquivos depois de adicioná-los ao arquivo " >.

Você está colocando o tarball em /test/archive/test.tar.gz e reduzindo o /test/ . A opção --remove-files informará tar para excluir o diretório /test/ no final, mas enquanto tar estiver em execução, ele acessará o arquivo /test/archive/test.tar.gz , portanto, você não poderá excluir o diretório.

Você pode jogar fora a opção --remove-files ou colocar seu tar em um diretório diferente.

    
por 18.01.2017 / 17:35

Tags