現在、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バイトのようですか? それで、多分これも明らかにすることができます。 ありがとう!
そのための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_json
をdo_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つのエントリを提案します。 、 deleted
、 modified
(またはcontent
:thinking:)、 owner
、 mode
など、サイズはバイト単位で指定する必要がありますもちろん、おそらくsizes { old: 12345, new: 12346}
のように
最も参考になるコメント
他のコマンドとの一貫性を保つために、これ
--json
または--json-lines
(出力に応じて)のいずれかである必要があります。いいえ、それは解析して有用なものに再結合するのはかなり厄介に見えます。
change
の部分全体は、既存の非JSON出力を解析するよりも優れているとは言えません。ファイル/ディレクトリ/ハードリンク/ソフトリンクなどの
type
フィールド、変更タイプをリストするchange
リスト、たとえばadded
を使用して、パスごとに1つのエントリを提案します。 、deleted
、modified
(またはcontent
:thinking:)、owner
、mode
など、サイズはバイト単位で指定する必要がありますもちろん、おそらくsizes { old: 12345, new: 12346}
のように