Como verificar se os arquivos são diferentes antes de copiar e sobrescrever?

2

Eu uso um pequeno script que copia (usando cp ) uma lista de arquivos de configuração para outro dispositivo. Gostaria de saber como rapidamente verificar se os arquivos foram modificados desde a última vez antes de fazê-lo e esgotar o dispositivo para nada.

    
por ChiseledAbs 27.07.2016 / 09:40

3 respostas

5

Digamos que você tenha um diretório config localmente que corresponda a um diretório config em seu dispositivo e faça alterações apenas localmente antes de sincronizá-las com o dispositivo, então rsync é uma boa ferramenta para executar o sincronizar.

Para sincronizar o diretório local com o diretório do dispositivo:

$ rsync -av config/ [email protected]:path/to/config/

Para excluir arquivos no dispositivo que não estão mais presentes no diretório config local, adicione o --delete flag a rsync :

$ rsync -av --delete config/ [email protected]:path/to/config/

Troque config/ e [email protected]:path/to/config/ para fazer backup do diretório config do dispositivo para um diretório local (ficou um pouco claro em qual direção você queria ir na pergunta).

    
por 27.07.2016 / 09:57
1
if ! diff -q file1 file2 > /dev/null 2>&1;
then

  echo "Files are changed"

else

  echo "Files not changed"

fi
    
por 27.07.2016 / 09:42
0

Geralmente diff/cmp é bom, mas no caso de arquivos muito grandes, a comparação pode demorar um pouco. Formas mais rápidas estão comparando os timestamps via stat ou comparando checksums via md5sum

    
por 27.07.2016 / 10:09