Restic: لا يتم تطبيق أنماط الاستبعاد

تم إنشاؤها على ٢٠ يونيو ٢٠١٧  ·  4تعليقات  ·  مصدر: restic/restic

ناتج restic version

restic 0.6.1 (v0.6.1-126-gb0fb95df)
تم تجميعه مع go1.8.3 في darwin / amd64

كيف بدأت restic بالضبط؟ (قم بتضمين سطر الأوامر الكامل)

restic backup --exclude-file ~/exclude.txt ~

ما الخلفية / الخادم / الخدمة التي استخدمتها؟

sftp إلى الشبكة المحلية

سلوك متوقع

تخطي الملفات المطابقة للنمط الموجود في exe.txt

السلوك الفعلي

تم تضمين الملفات ما لم أقم بفك النمط بشكل كبير إلى النقطة التي يكون فيها النمط غامضًا جدًا.

خطوات إعادة إنتاج السلوك

باستخدام ملف استثناء مثل هذا:

.[^.]*
/matt/Applications
/matt/Dropbox
/matt/Downloads
/matt/VirtualBox VMs
*.vmdk

هدفي هو تخطي ملفات dotfiles وبعض المجلدات المحددة في دليل $ HOME (المسمى matt ) (ولكن ليس كل مجلد باسم "Applications" على سبيل المثال). أوه ، وأي ملفات .vmdk (يمكن أن تكون ضخمة!)

عندما خففت من الأنماط إلى هذا:

.[^.]*
Applications
Dropbox
Downloads
VirtualBox VMs
*.vmdk

لقد نجحت (بمعنى أنها تخطت المجلدات) ولكن هذا غامض للغاية ، حيث لا أريد تخطي جميع المجلدات المسماة التنزيلات ، على سبيل المثال.

هل لديك أي فكرة عن سبب هذا؟

ربما ما زلت لا أفهم أنماط الاستبعاد بشكل صحيح. : ابتسامة: لقد قرأت # 1005 وأعتقد أنني في حيرة من أمري إذا كانت المسارات المطلقة مطلوبة من أجل - استبعاد أو إذا كانت مسارات الريبو المطلقة مطلوبة مثل - تضمين.

documentation bug

التعليق الأكثر فائدة

تنهد ، نعم ، أنت محق تمامًا. أنماط الاستبعاد مطلقة فيما يتعلق بما تقوم بنسخه احتياطيًا:
يتطابق النمط /home/matt/*.go مع جميع ملفات Go في منزلك عند تشغيل restic backup /home/matt . نظرًا للطريقة التي يعمل بها أرشيفي (انظر # 549 ، قرار التصميم السيئ الذي نحتاج إلى تصحيحه) ، يتم إسقاط البادئة /home/ ومكون مسار المستوى الأعلى في اللقطة هو /matt . لذلك للاستعادة ، ستحتاج إلى استخدام نمط التضمين /matt/*.go لمطابقة نفس الملفات. أعلم أنه سيء ​​، سأقوم بتصحيحه في النهاية :)

إذن ، هذه قائمة ملف الاستبعاد المصححة لحالة الاستخدام الخاصة بك:

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

ال 4 كومينتر

تحديث: حسنًا ، يبدو أن استبدال /matt/ بـ $HOME/ نجح ، على الرغم من أنني أجد عدم الاتساق بين - استبعاد و - تضمين المسارات المطلقة غريبًا / مفاجئًا بعض الشيء.

عادةً ما يكون $HOME/blabla هو /home/matt/blabla أم أنك غيرت شيئًا ما على نظامك؟

تنهد ، نعم ، أنت محق تمامًا. أنماط الاستبعاد مطلقة فيما يتعلق بما تقوم بنسخه احتياطيًا:
يتطابق النمط /home/matt/*.go مع جميع ملفات Go في منزلك عند تشغيل restic backup /home/matt . نظرًا للطريقة التي يعمل بها أرشيفي (انظر # 549 ، قرار التصميم السيئ الذي نحتاج إلى تصحيحه) ، يتم إسقاط البادئة /home/ ومكون مسار المستوى الأعلى في اللقطة هو /matt . لذلك للاستعادة ، ستحتاج إلى استخدام نمط التضمين /matt/*.go لمطابقة نفس الملفات. أعلم أنه سيء ​​، سأقوم بتصحيحه في النهاية :)

إذن ، هذه قائمة ملف الاستبعاد المصححة لحالة الاستخدام الخاصة بك:

.[^.]*
/home/matt/Applications
/home/matt/Dropbox
/home/matt/Downloads
/home/matt/VirtualBox VMs
*.vmdk

ibib على جهاز Mac الخاص بي ، الدليل الرئيسي الخاص بي هو /Users/matt ، ولكن نظرًا لأن --include يستخدم مسارًا مطلقًا للمستودع (مثل restic ls يظهر) ، فقد اكتشفت أن المسار المطلق الصحيح سيكون /matt/... .

@ fd0 آه! هذا منطقي أكثر ، شكرا للتوضيح. لذا فإن --exclude عند استخدامه مع restic backup هو مطلق لنظام الملفات ، و --include (يستخدم مع restic restore ) مطلق بالنسبة للمستودع. بمعنى آخر ، الأنماط مطلقة من حيث تأتي الملفات.

شكرا جزيلا على التفسير. الآن أفهم بشكل أفضل سبب كون 549 مشكلة تريد إصلاحها. :ابتسامة:

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات