Estou procurando algo que compare diretórios e arquivos como o Beyond Compare faz para o Windows.
É principalmente para uso do controle de origem, mas eu preciso usá-lo também para implantação.
Estou procurando algo que compare diretórios e arquivos como o Beyond Compare faz para o Windows.
É principalmente para uso do controle de origem, mas eu preciso usá-lo também para implantação.
Respostas:
O Meld é uma ferramenta que pode comparar e mesclar arquivos e diretórios. É uma interface gráfica do usuário para as ferramentas padrão diff
e de patch
linha de comando. (Veja man diff e man patch para mais detalhes)
Além disso, muitos sistemas de controle de origem (como bzr
ou git
) têm a capacidade de criar diferenças entre versões.
beyond compare
abaixo. superior ao fundir imho
Diff é seu amigo.
diff -ur path1 path2
Isso irá comparar todos os arquivos comuns entre o caminho1 e o caminho2.
Se você mudar -ur
para -urN
, também mostrará o conteúdo dos arquivos que estão presentes apenas em um dos caminhos.
colordiff
e usadocolordiff -ur path1 path2
O 'Beyond Compare' também está disponível para Linux.
Verifique o URL de download: http://www.scootersoftware.com/download.php
Use o diff
comando:
diff -u file1 file2
diff -u
seleciona um formato com algumas linhas de contexto. Uma planície diff file1 file2
lista apenas as linhas diferentes. Há muito mais opções para controlar o formato de saída, ignorar diferenças somente de espaço em branco, etc.
Se você deseja gravar a saída em um arquivo, redirecione-o:
diff -u file1 file2 >file1-file2.diff
A interface pode não ser muito sexy, mas é extremamente poderosa!
E se você estava acostumado a outro * Commander (como Norton ou similares), não ficará perdido.
Inspirado por esta entrada do blog .
Listando arquivos diferentes:
diff -qr folder1 folder2
Listando também o conteúdo:
diff -Naur folder1 folder2
Se os dois diretórios não estiverem na mesma máquina, rsync
talvez seja a solução mais fácil. Geralmente rsync
é usado para sincronizar diretórios, mas você pode executá-lo nos modos detalhado e seco, para listar apenas os arquivos que precisariam ser alterados.
rsync -rvnc --delete folder1 server:/path/to/folder2
Você pode omitir c
se quiser comparar arquivos com base em carimbos de data e hora e tamanhos de arquivo para acelerar tudo:
rsync -rvn --delete folder1 server:/path/to/folder2
O Krusader é uma ferramenta gratuita (disponível no Centro de Software) que mostra o conteúdo da pasta em comparação e você pode sincronizar com muitas opções diferentes. Você pode filtrar enquanto sincroniza e compara.
Para comparar o conteúdo do arquivo, basta marcar dois arquivos, selecione "arquivo"> "comparar conteúdo" e eles serão comparados letra por letra. a ferramenta de comparação padrão usada pelo krusader é a ferramenta padrão do KDE " Kompare ". Você pode configurar o krusader para usar qualquer outra ferramenta de comparação - como, por exemplo, uma das opções acima.
Esta é a solução mais completa que eu já encontrei e é muito conveniente. E suporta todas as teclas de função usadas pelo comandante da meia-noite (sintaxe do norton commander).
Eu aprendi sobre haxixe duas semanas atrás. E tem algumas vantagens fortes:
meld
, funciona bem para pastas muito grandes. Onde meld
fica extremamente lento e a interface do usuário não responde (bloqueada), o hashdeep funciona a uma velocidade constantersync
, o hashdeep detecta arquivos movidos - arquivos com o mesmo conteúdo, apenas em um diretório diferente.Saída detalhada é como:
...
foo/bar.txt: Known file not used
x/foo/M0824_2L.JPG: Moved from y/P1010998.JPG
hashdeep: Audit failed
Input files examined: 0
Known files expecting: 0
Files matched: 6233
Files partially matched: 0
Files moved: 3695
New files found: 19257
Known files not found: 4713
Uma boa maneira de fazer essa comparação é usar " find " com " md5sum " e depois um " diff ".
Exemplo:
Use find para listar todos os arquivos no diretório, calcule o hash md5 para cada arquivo e envie-o para um arquivo:
$find /dir1/ -type f -exec md5sum {} \; > dir1.txt
Execute o mesmo procedimento para o outro diretório:
$find /dir2/ -type f -exec md5sum {} \; > dir2.txt
Em seguida, compare o resultado dois arquivos com "diff":
$diff dir1.txt dir2.txt
Essa estratégia é muito útil quando os dois diretórios a serem comparados não estão na mesma máquina e você precisa garantir que os arquivos sejam iguais nos dois diretórios.
Outra boa maneira de fazer o trabalho é usar git
git diff --no-index dir1/ dir2/
Cumprimentos!
Tente também FreeFileSync . Possui uma interface decente, velocidade de comparação aceitável, boa filtragem do resultado da comparação, diferentes formas de sincronização. Ele vem com uma ferramenta de monitoramento de pastas (RealTimeSync) que pode iniciar o FreeFileSync (na verdade, qualquer comando ou script) quando essa pasta (s) específica (s) ou os arquivos contidos são alterados. Realmente vale a pena tentar.
Mais informações sobre isso aqui ou aqui , onde você tem um PPA , também
Na página deles, os principais recursos:
Compare os arquivos (bytewise ou por data) e sincronize-os.
Sem limitações: um número arbitrário de arquivos pode ser sincronizado.
Suporte Unicode.
Suporte de rede.
Suporte interno para nomes de arquivos muito longos (mais de MAX_PATH = 260 caracteres).
Banco de dados de sincronização para propagação de arquivos excluídos e detecção de conflitos
Suporte para vários pares de pastas com configuração distinta
Suporte completo para links simbólicos do Windows / Linux e pontos de junção do Windows.
Interface do usuário enxuta e de fácil acesso: Altamente otimizada para velocidade e enormes conjuntos de dados.
Algoritmos codificados em C ++ completamente.
Todos os indicadores de progresso otimizados para desempenho máximo!
Crie trabalhos em lote para sincronização automatizada com ou sem GUI.
Foco na usabilidade:
Somente funcionalidade necessária na interface do usuário: sem menus sobrecarregados ou selva de ícones.
Selecione todas as pastas via arrastar e soltar.
A última configuração usada e as configurações de tela são salvas automaticamente.
Mantenha e carregue configurações diferentes arrastando e soltando, botão de carregamento ou linha de comando.
Clique duas vezes para iniciar o aplicativo externo (por exemplo, mostrar arquivo no Windows Explorer)
Copie e cole todos os dados da grade como texto
Exclua arquivos supérfluos / temporários diretamente na grade principal.
Clique com o botão direito do mouse no menu de contexto.
Informações abrangentes sobre status e relatórios de erros
Classifique as listas de arquivos por nome, tamanho ou data.
Suporte para tamanhos de arquivo maiores que 4 GB.
Opção para mover arquivos para a Lixeira em vez de excluí-los / substituí-los.
Ignore os diretórios "\ RECYCLER" e "\ System Volume Information" com o filtro padrão. (Apenas Windows)
Versões localizadas estão disponíveis para vários idiomas.
Excluir antes da cópia: evite a falta de espaço em disco para grandes trabalhos de sincronização.
Filtre a funcionalidade para incluir / excluir arquivos da sincronização (sem a necessidade de uma nova comparação!).
Incluir / excluir arquivos específicos da sincronização temporariamente.
Lide automaticamente com as alterações do horário de verão nos volumes FAT / FAT32.
Versão portátil disponível (selecionável via instalador).
Versão nativa de 64 bits.
Verifique se há atualizações no FreeFileSync automaticamente.
Copie arquivos bloqueados usando o Windows Volume Shadow Copy Service. (Apenas Windows)
Crie backups regulares com macros% time%,% date% nos nomes de diretório
Copie os tempos de criação / acesso / modificação de arquivos e pastas ao sincronizar
Estratégia avançada de bloqueio para permitir vários processos de sincronização (por exemplo, vários gravadores, o mesmo compartilhamento de rede)
Eu acrescentaria que ele pode gerenciar arquivos excluídos, movendo-os para o Lixo ou para uma pasta especificada pelo usuário. Para apontar uma desvantagem: a documentação do programa se concentra bastante no Windows, menos no Linux. Mas faz seu trabalho bem.
Você pode usar difuso:
sudo apt-get install diffuse
diffuse file1 file2
Você pode tentar combinar .
São os repositórios e fornecem uma GUI para comparação de arquivos ou pastas.
O IMHO FreeFileSync é muito bom e mais útil que o Meld. É rápido e estável, pode fazer sincronizações acessíveis e também pode exportar o resultado da comparação para um arquivo csv.
Recursos de plataforma cruzada, fáceis, sem problemas e com economia de perfil tornam o Jfilesync minha melhor escolha
File_1.txt
Line1
Line2
File_2.txt
Line1
Line 2
Você pode usar o comando cmp
:
cmp -b "File_1.txt" "File_2.txt"
saída seria
a b differ: byte 11, line 2 is 62 2 40
você pode usar o comando diff :
diff -r --brief dir1 dir2
man diff
-r, --recursive
recursively compare any subdirectories found
-q, --brief
report only when files differ