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.

P Roy
fonte

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.

Marco Mariani
fonte
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.

hotei
fonte
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.

Cinza
fonte
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?

Journeyman Geek
fonte
-1

Então, por que não apenas

cp -Rv [SRC] [DEST] | grep -v [EXCLUDE]
halfcab123
fonte