<p>borg diff:json出力を追加</p>

作成日 2018年04月11日  ·  6コメント  ·  ソース: borgbackup/borg

現在、borgdiffは次のようなものを示しています。

+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

そして、それは素晴らしいことです。 これらの人間が読めるサイズ情報を除いて、マシンが解析するのは少し難しいです。 理想的には、機械可読サイズ(プレフィックスなしのバイトのみ)を出力するオプションがあります。
プレフィックスと言えば、これらのkBは1000バイトのようですか、それともKiBは1024バイトのようですか? それで、多分これも明らかにすることができます。 ありがとう!

最も参考になるコメント

diffにオプション--json-outputを追加することを提案します。

他のコマンドとの一貫性を保つために、これ--jsonまたは--json-lines (出力に応じて)のいずれかである必要があります。

そして、diff出力は次のようになります。
このようにすると、ユーザーは出力を簡単に解析できるようになります

いいえ、それは解析して有用なものに再結合するのはかなり厄介に見えます。 changeの部分全体は、既存の非JSON出力を解析するよりも優れているとは言えません。
ファイル/ディレクトリ/ハードリンク/ソフトリンクなどのtypeフィールド、変更タイプをリストするchangeリスト、たとえばaddedを使用して、パスごとに1つのエントリを提案します。 、 deletedmodified (またはcontent :thinking:)、 ownermodeなど、サイズはバイト単位で指定する必要がありますもちろん、おそらくsizes { old: 12345, new: 12346}のように

全てのコメント6件

そのためのjson出力サポートがあるかどうかを確認しましたか?

私は確かにそのためにborg help diffをチェックしました。 私が見つけたJSONに関連する唯一のものはこれです:

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

だから私はそこに運がないのではないかと心配しています。

OK、まだそれがない場合は、json出力を追加することをお勧めします。

その場合は、各変更の非圧縮サイズと圧縮サイズの両方を含めるように要求したいと思います。 ボーグのソースコードを理解できる限り、現在の出力は非圧縮サイズを参照しています。

diffにオプション--json-outputを追加することを提案します。
そして、diff出力は次のようになります。

{
 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'}
        ]
}

このようにすると、ユーザーは出力を簡単に解析できるようになります。これにより、ユーザーは個別のグループとフィールドを持つことになります。
そこで、内部関数print_output_jsondo_diffに追加します。これにより、diffsジェネレーターから上記のような出力が生成されます。

また、人間が読めない形式の場合は、オプション--bytesを追加して、単位なしでファイルサイズを表示できます。 このオプションがあり、標準出力の場合もいいと思います。
これで、diff関数はオーバーライドされItemDiff.__repr__()を使用し、次にItemDiff._content_string()を使用して差分表現を取得します。 __repr__に引数を追加できないので、私の意見ではgになります
別の関数を追加して、現在の__repr__コンテンツをそこに配置する必要があります。 __repr__は、その関数を呼び出して標準出力を取得します。 関数は引数(例:in_bytes)を取り、それを渡します
Item.get_size() 。 率直に言って、私はまだItem.get_size()に飛び込んでいませんが、アイテムのサイズをバイト単位で取得できると思います。
何か考え、提案はありますか?

diffにオプション--json-outputを追加することを提案します。

他のコマンドとの一貫性を保つために、これ--jsonまたは--json-lines (出力に応じて)のいずれかである必要があります。

そして、diff出力は次のようになります。
このようにすると、ユーザーは出力を簡単に解析できるようになります

いいえ、それは解析して有用なものに再結合するのはかなり厄介に見えます。 changeの部分全体は、既存の非JSON出力を解析するよりも優れているとは言えません。
ファイル/ディレクトリ/ハードリンク/ソフトリンクなどのtypeフィールド、変更タイプをリストするchangeリスト、たとえばaddedを使用して、パスごとに1つのエントリを提案します。 、 deletedmodified (またはcontent :thinking:)、 ownermodeなど、サイズはバイト単位で指定する必要がありますもちろん、おそらくsizes { old: 12345, new: 12346}のように

このページは役に立ちましたか?
0 / 5 - 0 評価