Como copiar arquivos de uma extensão, somente se o mesmo arquivo existir no destino?

0

Pode parecer estranho, mas eu realmente quero copiar apenas os arquivos existentes , de modo que esses arquivos serão atualizados / substituídos, e nenhum novo arquivo será adicionado.

Eu quero copiar arquivos de uma única extensão. Funciona bem com esta linha de script:

rsync -avm --include='*.bak' -f 'hide,! */' /Directory-to-be-backed-up/ /media/USB_stick

Mas eu também quero que o arquivo seja copiado somente se já existir no destino (sobrescrevendo-o).

Por exemplo, eu tenho esses 3 arquivos em /tmp/a :

/tmp/a/1.h
/tmp/a/2.h
/tmp/a/internal/3.h

E esses 2 arquivos em /tmp/b :

/tmp/b/1.h
/tmp/b/internal/3.h

Gostaria de atualizar / substituir os arquivos existentes em /tmp/b usando os de /tmp/a , mas não copiar nenhum arquivo novo (como /tmp/a/2.h ).

Existe uma maneira?

    
por Tom Brito 11.01.2012 / 20:01

1 resposta

3

Eu reorganizaria seu comando um pouco, primeiro removerei o --include e, em vez disso, coloquei o *.bak no caminho de origem. Em seguida, você pode adicionar --existing para copiar apenas os arquivos existentes.

Uma maneira possível de fazer isso (não testada):

rsync -avm --existing /Directory-to-be-backed-up/*.bak /media/USB_stick
    
por Huckle 11.01.2012 / 20:34