<p>borg diff: adicionar saída json</p>

Criado em 11 abr. 2018  ·  6Comentários  ·  Fonte: borgbackup/borg

Agora borg diff mostra algo assim:

+27.4 kB  -27.4 kB var/vmail/example.com/foobar/Auto/Steam und Co/dovecot-uidlist
+490.4 kB -489.3 kB var/vmail/example.com/foobar/Auto/Steam und Co/dovecot.index.cache
 +29.6 kB  -29.3 kB var/vmail/example.com/foobar/Auto/Steam und Co/dovecot.index.log
added      62.77 kB var/vmail/example.com/foobar/Auto/Steam und Co/new/1520542202.M174402P24533.turtle,S=62768,W=63599
  +4.5 kB   -4.5 kB var/vmail/example.com/foobar/maildirsize

E isso é ótimo. Exceto que essas informações de tamanho legíveis por humanos são um pouco difíceis para uma máquina analisar. Idealmente, haveria uma opção para produzir tamanhos legíveis por máquina (também conhecidos como bytes, sem qualquer prefixo).
Falando em prefixo: esses kB são como em 1000 Bytes ou KiB como em 1024 Bytes? Enquanto isso, talvez isso possa ser esclarecido também. Obrigado!

Comentários muito úteis

Proponho adicionar uma opção --json-output para diff.

Isso deve ser --json ou --json-lines (dependendo de qual saída) para consistência com outros comandos.

E uma saída diff deve ser algo assim:
Dessa forma, os usuários terão uma maneira fácil de analisar a saída

Não, isso parece bastante estranho para analisar e recombinar para algo útil. Toda a parte change não é melhor do que analisar a saída não JSON existente, temo.
Eu prefiro sugerir uma entrada por caminho, tendo um campo type para arquivo/diretório/hardlink/softlink etc., uma lista change que lista os tipos de alteração, por exemplo, added , deleted , modified (ou content :pensando: ), owner , mode , etc., os tamanhos devem ser dados em bytes claro, e provavelmente como sizes { old: 12345, new: 12346}

Todos 6 comentários

Você verificou se temos suporte de saída json para isso?

Eu realmente verifiquei o borg help diff para isso. A única coisa relacionada ao JSON que encontrei é isso:

  --log-json            Output one JSON object per log line instead of
                        formatted text.

Então, sem sorte, estou com medo.

OK, se ainda não temos isso, adicionar saída json parece ser uma boa ideia.

Nesse caso, também gostaria de solicitar a inclusão do tamanho descompactado e compactado de cada alteração. Tanto quanto eu posso entender o código-fonte do Borg, a saída atual refere-se ao tamanho descompactado.

Proponho adicionar uma opção --json-output para diff.
E uma saída diff deve ser algo assim:

{
 added: [
        {path: '/path/to/file', change: '27.4 kB'}
        ],
 modified: [
        {path: '/path/to/file', change: '+490.4 kB -489.3 kB'}
        ],
 deleted: [
        {path: '/path/to/file', change: 'directory'}
        ]
}

Dessa forma, os usuários terão uma maneira fácil de analisar a saída, pois terão grupos e campos separados.
Então, vou adicionar a função interna print_output_json a do_diff , que produzirá a saída como acima do gerador de diferenças.

Também para o formato não legível por humanos, podemos adicionar uma opção --bytes e mostrar o tamanho do arquivo sem unidades. Eu acho que seria bom ter essa opção e para saída padrão também.
Agora a função diff usa ItemDiff.__repr__() substituído que, por sua vez, usa ItemDiff._content_string() para obter a representação da diferença. Como não podemos adicionar argumentos a __repr__ Na minha opinião seria g
ood para adicionar uma função separada e colocar o conteúdo __repr__ atual lá. __repr__ invocará essa função para obter a saída padrão. A função receberá um argumento (por exemplo, in_bytes) e passará esse
para Item.get_size() . Francamente, ainda não mergulhei em Item.get_size() , mas acho que posso obter o tamanho do item em bytes.
Quaisquer pensamentos, sugestões?

Proponho adicionar uma opção --json-output para diff.

Isso deve ser --json ou --json-lines (dependendo de qual saída) para consistência com outros comandos.

E uma saída diff deve ser algo assim:
Dessa forma, os usuários terão uma maneira fácil de analisar a saída

Não, isso parece bastante estranho para analisar e recombinar para algo útil. Toda a parte change não é melhor do que analisar a saída não JSON existente, temo.
Eu prefiro sugerir uma entrada por caminho, tendo um campo type para arquivo/diretório/hardlink/softlink etc., uma lista change que lista os tipos de alteração, por exemplo, added , deleted , modified (ou content :pensando: ), owner , mode , etc., os tamanhos devem ser dados em bytes claro, e provavelmente como sizes { old: 12345, new: 12346}

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ypid picture ypid  ·  6Comentários

russelldavis picture russelldavis  ·  3Comentários

zatricky picture zatricky  ·  3Comentários

rugk picture rugk  ·  3Comentários

anarcat picture anarcat  ·  4Comentários