Comparar Arquivos do Servidor

8 respostas
RenanRosa

Olá pessoal, tem algum jeito ou api para comparar um arquivo do pc com o arquivo do servidor, preciso fazer algo que se for diferente ele traz o arquivo do servidor.
Alguém tem alguma ideia ?
Obrigado

8 Respostas

E

No sentido em que você usou o verbo, a grafia é “traz”. Coisas da língua portuguesa…

Na verdade, o que normalmente se faz para manter dois diretórios sincronizados (que é o que provavelmente você está querendo fazer) é usar algum serviço como o rsync. (Se o servidor for Windows, há uma implementação desse protocolo com o produto DeltaCopy - http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp ) . Se o servidor for Linux ou algum sabor do Unix (como o Solaris) o rsync está disponível e talvez já esteja até instalado.


http://ricardomartins.com.br/2009/08/09/rsync-no-windows/

Se você não pode instalar o rsync no servidor nem no cliente, então você pode usar um método muito tosco, que é o de comparar o tamanho e a data. Se o tamanho e/ou data estiverem diferentes, provavelmente o arquivo é outro e você tem de puxar o arquivo inteiro (eu disse que isso era tosco, não?)
Se o tamanho e a data forem iguais, então talvez o arquivo seja o mesmo e você não precise puxá-lo, mas você não tem garantia de que realmente o arquivo seja mais novo :frowning:

EDIT - a língua portuguesa é mais traiçoeira que eu estava imaginando. Na verdade, o tempo certo do verbo força a usar a palavra “traga”, não “traz”. Como dizia o Bill Clinton, “fumei mas não traguei” :slight_smile:

andreiribas

Compara o md5sum dos arquivos do servidor e do cliente.

Se forem diferentes, então os arquivos são diferentes também.

RenanRosa

andreiribas:
Compara o md5sum dos arquivos do servidor e do cliente.

Se forem diferentes, então os arquivos são diferentes também.

E como comparar o md5sum com java ?

E

Se você for calcular o MD5 do arquivo do servidor, há duas maneiras:
a) Ou você executa um comando remotamente, que calcule esse MD5 e evite trazer esses dados do servidor :frowning:
b) Ou então você calcula o MD5 trazendo todos os dados do servidor para o cliente. Mas se você vai fazer isso, então é melhor já copiar o arquivo de uma vez do servidor, já que vai ter de trazer todos os dados para calcular o MD5 :frowning:

Uma forma que alguns sistemas fazem é o seguinte: periodicamente eles rodam um script (talvez via crontab) que cria arquivos com o md5 e os deixa em um diretório separado. Aí quem for pegar o arquivo do servidor deve, primeiramente, checar esse arquivo de md5, antes de baixar alguma coisa. Isso costuma funcionar bem se:
a) O servidor for Unix, Linux, alguma coisa que tenha o programa “md5sum” e o “cron”, já pronto,
b) Os arquivos não se modificarem muito frequentemente (por exemplo, arquivos de downloads de programas, que você normalmente vai atualizar no máximo uma vez por dia).
c) O cliente também tiver o programa md5sum.

RenanRosa

entanglement:
Se você for calcular o MD5 do arquivo do servidor, há duas maneiras:
a) Ou você executa um comando remotamente, que calcule esse MD5 e evite trazer esses dados do servidor :frowning:
b) Ou então você calcula o MD5 trazendo todos os dados do servidor para o cliente. Mas se você vai fazer isso, então é melhor já copiar o arquivo de uma vez do servidor, já que vai ter de trazer todos os dados para calcular o MD5 :frowning:

Uma forma que alguns sistemas fazem é o seguinte: periodicamente eles rodam um script (talvez via crontab) que cria arquivos com o md5 e os deixa em um diretório separado. Aí quem for pegar o arquivo do servidor deve, primeiramente, checar esse arquivo de md5, antes de baixar alguma coisa. Isso costuma funcionar bem se:
a) O servidor for Unix, Linux, alguma coisa que tenha o programa “md5sum” e o “cron”, já pronto,
b) Os arquivos não se modificarem muito frequentemente (por exemplo, arquivos de downloads de programas, que você normalmente vai atualizar no máximo uma vez por dia).
c) O cliente também tiver o programa md5sum.

mas como comparo o md5sun ?
os servidores são linux, os clientes podem ser linux e windows

andreiribas

RenanRosa:
andreiribas:
Compara o md5sum dos arquivos do servidor e do cliente.

Se forem diferentes, então os arquivos são diferentes também.

E como comparar o md5sum com java ?

Você pode fazer do jeito que o entanglement falou, ou usar essa biblioteca:

http://twmacinta.com/myjava/fast_md5.php

lelodois

Ressuscitando…

Dependendo da necessidade de cada um, até compensa comparar o

file.lastModified() .

Abs

E

Bom dia!

Estou querendo fazer exatamente esse método “tosco” que você falou, hehe. Como faço isso, tem algum exemplo de código?

Criado 13 de outubro de 2011
Ultima resposta 29 de mai. de 2015
Respostas 8
Participantes 5