'cp' pula alguns dos diretórios de pontos do Eclipse

1

Estou tentando fazer backup do diretório .metadata do meu Eclipse. O comando que eu corro é:

cp -Rf ~/some/where/.metadata/* ~/some/backup/.metadata/.

A primeira vez que tentei isso, a cópia ignorou o arquivo de bloqueio e os diretórios .plugins e .mylyn . Depois de fazer algumas pesquisas, encontrei alguns tópicos mencionando mudanças de permissão. Eu apliquei as mudanças e encontrei algum sucesso.

Agora, a execução do script não será criada nem atravessada nos diretórios .plugins ou .mylyn . Pesquisas adicionais surgiram com zero resultados.

Estou usando:

Windows XP SP 3

Cygwin 1.7.1-1

    
por DDus 14.01.2010 / 18:33

2 respostas

1

O caractere curinga * in ~/some/where/.metadata/* não corresponde a arquivos ou diretórios que começam com um ponto. Esse é o comportamento da maioria dos shells, não apenas do Cygwin. Algumas alternativas:

  • Use outro argumento para incluir explicitamente arquivos de ponto
    cp -Rf ~/some/where/.metadata/* ~/some/where/.metadata/.* ~/some/backup/.metadata/.

( .* corresponde arquivos e diretórios que começam com dois ou mais pontos)

  • Use uma expressão que não use o curinga:
    cp -Rf ~/some/where/.metadata/ ~/some/backup/
  • Use o tar cf - | tar xf - idiom
    tar cf - ~/some/where/.metadata | (cd ~/some/backup/.metadata ; tar xf -)
    
por 14.01.2010 / 18:53
0

Eu prefiro usar rsync ou cpio para copiar diretórios:

rsync -acv --delete . DST

find . | cpio -pudvm DST

Eu suspeito que eu seja uma das poucas pessoas a usar cpio ; é um velho hábito de trabalhar em máquinas SysV. Ele tem a desvantagem de ter que copiar do diretório atual: se você passar um caminho absoluto para find , esse caminho será replicado no diretório de destino. Por outro lado rsync tem sua própria estranheza, dependendo se o diretório SRC tem uma barra final.

    
por 14.01.2010 / 18:37