tar uma pasta menos uma subpasta

1

Estou tentando criar um arquivo tar de uma pasta thisfolder , mas quero omitir uma subpasta chamada notthisfolder . Alguém pode me mostrar como fazer isso? Eu tentei tar tar a pasta inteira e removendo o que eu quero omitir, mas essa pasta em particular é 17gb.

\thisfolder
  file1
  file2
  \notthisfolder
    omitfile1
    omitfile2
  \butincludethisfolder
    includefile1
    infludefile2

Eu estava usando tar --exclude='notthisfolder' -zcvpf archive.tar /thisfolder/

    
por sam yi 06.03.2014 / 00:01

3 respostas

2

Seu comando está quase correto. Use

 tar cvfzp achive.tar.gz --exclude notthisfolder thisfolder/
  1. Observe que a opção --exclude notthisfolder passa após o nome do arquivo.

  2. Comentário cosmético: ao usar a opção z , você está usando o gzip para compactar seu tarball, portanto, nomeie o arquivo archive.tar.gz e não archive.tar .

  3. Além disso, /thisfolder/ é um caminho absoluto e aponta para a pasta thisfolder dentro do diretório raiz / . Para especificar um caminho relativo (para o diretório de trabalho atual), use thisfolder/ sem a barra inicial / .

  4. Como um pequeno detalhe, você não precisa prefixar as opções cvfzp com - . Um personagem a menos para digitar!

Funciona para mim;)

$ tree
.
└── thisfolder
    ├── butincludethisfolder
    │   ├── includefile1
    │   └── includefile2
    ├── file1
    ├── file2
    └── notthisfolder
        └── notthisfile

3 directories, 6 files

$ tar cvfzp achive.tar.gz --exclude notthisfolder thisfolder/
thisfolder/
thisfolder/butincludethisfolder/
thisfolder/butincludethisfolder/includefile1
thisfolder/butincludethisfolder/includefile2
thisfolder/file1
thisfolder/file2
    
por Malte Skoruppa 06.03.2014 / 00:32
0

De man tar :

 --exclude=PATTERN
       exclude files, given as a PATTERN

Então, dado um diretório como este:

terdon@oregano foo $ tree
.
└── thisfolder
    ├── butincludethisfolder
    │   ├── includefile1
    │   └── includefile2
    └── notthisfolder
        ├── omitfile1
        └── omitfile2

Você pode executar o seguinte comando tar para conseguir o que deseja:

tar -cvzf foo.tar --exclude notthisfolder thisfolder/

Isso criará tar.foo , que contém:

$ tar xvzf foo.tar 
thisfolder/
thisfolder/butincludethisfolder/
thisfolder/butincludethisfolder/includefile2
thisfolder/butincludethisfolder/includefile1
    
por terdon 06.03.2014 / 00:32
0

Parece que a sua sintaxe está errada.

Deveria ser mais assim:

tar -zcvpf /where/you/store/backups/archive.tar /thisfolder --exclude "/notthisfolder" --exclude "/notthisfolder/omitfile1" --exclude "/notthisfolder/omitfile2"

ou se os arquivos omitidos estiverem todos em /notthisfolder

tar -zcvpf /where/you/store/backups/archive.tar /thisfolder --exclude "/notthisfolder"

    
por troylatroy 06.03.2014 / 00:31