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


9

Devido a um problema no disco rígido, estou tentando mudar uma partição de um disco rígido para outro. Estou seguindo o artigo http://www.ibm.com/developerworks/library/l-partplan.html para fazer isso. Na parte de cópia, eu gostaria de ignorar um subdiretório específico. Como fazer isso tendo em mente que, ao copiar, tenho que preservar meu grupo de proprietários e o carimbo de data / hora. Existem cerca de 700 GB de dados que precisam ser copiados se eu não ignorar um subdiretório específico.

Respostas:


11

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

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


Sim, isso fez o truque. Isso funciona .. #
P Roy

2

Normalmente eu uso da cpioseguinte maneira,

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.



0

Você pode mover temporariamente ( mv) o subdiretório grande para outro local, copiar e restaurar o subdiretório? Não consigo ver uma opção direta cppara fazer isso.


Eu também verifiquei man cp, não há como ignorar o uso de cp. Eu tenho 550 GB de dados nesse subdiretório e mv que pode levar horas.
P Roy

Presumi que o mv seria uma operação de custo relativamente baixo - atualizando referências aos dados em vez de movê-los fisicamente no disco. Pelo menos, sempre achei as mudanças no Windows muito mais rápidas que as cópias - o sistema de arquivos Linux poderia funcionar de maneira totalmente diferente.
Ash

mv para o mesmo disco rígido é rápido. Mas quando se faz um mv através de hardks, acho que leva o mesmo tempo que um cp.
P Roy

Eu pretendia movê-lo para algum lugar no mesmo disco rígido para tirá-lo do caminho, copiar o restante para o disco remoto e depois mover o arquivo grande de volta. A menos que você esteja copiando o disco inteiro de /.
Ash

0

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


-1

Então, por que não apenas

cp -Rv [SRC] [DEST] | grep -v [EXCLUDE]
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.