Como posso usar o cp para copiar um diretório, mas ignorar um certo subdiretório no Linux?

8

Devido a um problema no disco rígido, estou tentando deslocar uma partição de um disco rígido para outro. Estou seguindo o artigo link para fazer isso. Na parte de cópia, gostaria de ignorar um subdiretório específico. Como posso realizar isso tendo em mente ao copiar, tenho que preservar meu grupo de proprietários e o registro de data e hora. Existem cerca de 700 GB de dados que precisam ser copiados se eu não ignorar um subdiretório específico.

    
por P Roy 13.06.2010 / 09:53

6 respostas

9

rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to

Você pode querer (ou não) usar --del também. Verifique a página de manual.

    
por 13.06.2010 / 10:29
2

Normalmente, uso cpio da seguinte forma,

cd source_dir; find . -depth | cpio -pdmv dest_dir

E como esse é um pipeline, você pode colocar um "filtro de subtração" no meio.

cd sourcedir; find . -depth | grep -v exclude_dir | cpio -pdmv dest_dir

ou você pode dividir isso em várias etapas,

cd source_dir; find . -depth > files.lst
gedit files.lst  # (take out the offending directory and files and save back to files.lst)
cpio -pdmv dest_dir < files.lst

É claro que eu testaria isso em algo menor primeiro, mas você entendeu.

    
por 13.06.2010 / 22:13
0

Você pode escrever um script bash simples com um loop para ignorar o caminho que você não deseja copiar e copiar o resto. Outra solução poderia ser para nós expressões regulares. Você pode ler em bash scripting aqui - > link Tutorial Regex aqui - > link

    
por 13.06.2010 / 10:07
0

Você pode mover temporariamente ( mv ) o subdiretório grande para algum outro local, fazer a cópia e restaurar o subdiretório? Não consigo ver uma opção direta em cp para fazer isso.

    
por 13.06.2010 / 10:11
0

Uma solução bastante feia, mas ... por que não apenas copiar tudo no diretório de forma não recursiva e depois copiar os diretórios individuais de forma recursiva?

    
por 13.06.2010 / 10:45
0

Então, por que não apenas

cp -Rv [SRC] [DEST] | grep -v [EXCLUDE]
    
por 14.05.2015 / 04:45

Tags