لا يدعم borg list
سوى أرشيف القوائم والوقت والمعرف للأرشيف. عندما أرى ، على سبيل المثال ، أنني بحاجة إلى مساحة وأريد حذف الأرشيفات الكبيرة ، (على سبيل المثال ، بسبب https://github.com/borgbackup/borg/issues/2870) ، أود أن أرى نظرة عامة على جميع أحجام الأرشيف العثور على أكبرها ويحتمل حذفها.
أعلم أنه يمكنني borg info
لكل أرشيف ، لكن هذا يستغرق بعض الوقت وهو غير ملائم للعديد من الأرشيفات.
بالطبع ، أنا مهتم فقط "بالحجم غير المكرر" لـ "هذا الأرشيف".
ولكن إذا كنت ترغب في ذلك ، يمكنك أيضًا تلخيص القيم (أو كيفية القيام بذلك) وعرض سطر "حجم جميع المحفوظات: XY GB" في الجزء السفلي.
ربما تحتاج إلى تخزين هذه المعلومات مؤقتًا بطريقة ما / في مكان ما ، ولكن يجب أن يكون ذلك ممكنًا ، حيث لا يتغير حجم الأرشيف عادةً وبالتالي لا تنتهي صلاحية ذاكرة التخزين المؤقت أبدًا (ما لم يتم حذف الأرشيف).
حتى وقت قريب ، كانت البنية التحتية اللازمة لذلك مفقودة - لقد أضفتها (إلى الفرع الرئيسي) عندما قمت بتطبيق العنصر النائب "التعليق" لـ borg list <repo>
. يمكنه الآن حساب الأشياء عند الطلب وليس فقط إظهار البيانات من إدخال البيان ، كما كان من قبل.
لكن كن على دراية بأن حساب أي شيء يحتاج إلى قراءة البيانات الوصفية للأرشيف بالكامل سيكون بطيئًا ، خاصة. إذا كانت القائمة تعرض العديد من الأرشيفات و / أو تم الوصول إلى الريبو عبر اتصال بطيء.
borg info -a '*'
، borg info --last/first x
borg info -a '*'
من المثير للاهتمام أن هذا ممكن ، لكنه بطيء إلى حد كبير.
لكن كن على دراية بأن حساب أي شيء يحتاج إلى قراءة البيانات الوصفية للأرشيف بالكامل سيكون بطيئًا ، خاصة. إذا كانت القائمة تعرض العديد من الأرشيفات و / أو تم الوصول إلى الريبو عبر اتصال بطيء.
نعم ، لهذا السبب قلت: ألا يمكنك تخزين هذه الحقيقة فقط؟
من المثير للاهتمام أن هذا ممكن ، لكنه بطيء إلى حد كبير.
يجب حساب _الحجم المكرر_ ، ولا يمكن تخزينه مؤقتًا - لذلك سيكون هذا دائمًا بطيئًا نوعًا ما ، على الرغم من أن # 2764 يجعله مبلغًا معقولاً بشكل أسرع.
أتمنى هذه الميزة بنفسي ، لقد صفعت هذا (تقنيًا: wink :) سطر واحد معًا للحصول على قائمة أرشيفية كما أود أن تبدو:
printf 'Archive\t\t\t\t\tOrig\tComp\tDedup\n'; printf '%-32.32s\t%s\t%s\t%s\n' $(borg info --json --sort-by name --glob-archives '*' REPO | jq '.archives[] | "\(.name) \(.stats.original_size) \(.stats.compressed_size) \(.stats.deduplicated_size)"' | sed --expression='s/^"//;s/"$//' | numfmt --field='2-4' --to=iec)
يستخدم jq
لتنسيق JSON و numfmt
من coreutils
لجعل الأحجام قابلة للقراءة. تبدو النتيجة كما يلي (تم قصها إلى مجموعة خطوط تمثيلية):
Archive Orig Comp Dedup
hostname-home-20190613-090600 288G 92G 12K
hostname-home-20190613-091013 288G 92G 117K
hostname-home-20190617-005337 220G 61G 6.9M
hostname-home-20190617-022904 288G 92G 16M
hostname-home-20190617-225658 288G 92G 40K
hostname-sysconfig-20190617-023108 12M 3.2M 40K
hostname-sysconfig-20190617-225820 12M 3.2M 32K
hostname-sysconfig-20190618-144623 12M 3.2M 105K
hostname-sysconfig-20190621-224259 13M 3.3M 110K
hostname-system-20190613-081754 300G 97G 20M
hostname-system-20190613-091212 300G 97G 14M
hostname-system-20190618-144635 300G 97G 37M
hostname-system-20190621-224311 308G 98G 4.6M
hostname-system-20190621-230350 308G 98G 617K
مع 39 أرشيفًا فقط ، تكون السرعة على ما يرام ، لكنني أعتقد أن القيام بذلك باستخدام --last 1
كجزء من تشغيل النسخ الاحتياطي وتخزين هذا في سجل منفصل للتشاور عند الطلب سيكون طريقة لاستخدامه في الممارسة العملية.
التعليق الأكثر فائدة
أتمنى هذه الميزة بنفسي ، لقد صفعت هذا (تقنيًا: wink :) سطر واحد معًا للحصول على قائمة أرشيفية كما أود أن تبدو:
يستخدم
jq
لتنسيق JSON وnumfmt
منcoreutils
لجعل الأحجام قابلة للقراءة. تبدو النتيجة كما يلي (تم قصها إلى مجموعة خطوط تمثيلية):مع 39 أرشيفًا فقط ، تكون السرعة على ما يرام ، لكنني أعتقد أن القيام بذلك باستخدام
--last 1
كجزء من تشغيل النسخ الاحتياطي وتخزين هذا في سجل منفصل للتشاور عند الطلب سيكون طريقة لاستخدامه في الممارسة العملية.