EXPIREOVER(8) InterNetNews Documentation EXPIREOVER(8)

expireover - پاکسازی پایگاه داده overview در INN

expireover [-ekNpqs] [-f file] [-w offset] [-z rmfile] [-Z lowmarkfile]

دستور expireover ورودی‌های قدیمی را از پایگاه دادهٔ overview اخبار منقضی و پاکسازی می‌کند. این ابزار فهرستی از گروه‌های خبری را می‌خواند (به‌طور پیش‌فرض از pathdb/active، اما می‌توان با گزینهٔ -f فایل دیگری را مشخص کرد) و سپس اشاره‌ها به هر مقاله‌ای را که دیگر در اسپول اخبار وجود ندارد، از پایگاه دادهٔ overview حذف می‌کند.

اگر groupbaseexpiry در inn.conf برابر با true باشد، expireover همچنین مقاله‌های قدیمی را طبق قوانین انقضا در expire.ctl از اسپول اخبار حذف می‌کند. در غیر این صورت فقط ورودی‌های overview را برای مقالاتی حذف می‌کند که پیش‌تر توسط فرایند دیگری حذف شده‌اند، و گزینه‌های -e، -k، -N، -p، -q، -w و -z همگی نادیده گرفته می‌شوند.

هنگامی که expiretombstone و groupbaseexpiry در inn.conf فعال باشند، expireover هر توکن لغوشده را تحت یک قفل انحصاری POSIX به انتهای فایل expireover.tombstone.NEW در pathdb اضافه می‌کند، و در صورت اجرای موفقیت‌آمیز، نام فایل را به‌طور اتمیک جایگزین می‌کند. در حالت delayrm (-z)، تغییر نام پس از موفقیت fastrm توسط expirerm انجام می‌شود. اجرای بعدی expire از این لاگ استفاده می‌کند تا از بررسی‌های تک‌به‌تک وجود در فضای ذخیره‌سازی صرف‌نظر کند. به inn.conf(5) زیر بخش expiretombstone مراجعه کنید.

هنگامی که groupbaseexpiry تنظیم شده باشد، رفتار پیش‌فرض expireover این است که مقاله را پس از منقضی شدن در تمام گروه‌های خبری که در آن‌ها ارسال همزمان (crosspost) شده بود، از اسپول حذف کند. با این حال، مقاله به محض اینکه از یک گروه خبری خاص منقضی شود، از پایگاه دادهٔ overview همان گروه حذف می‌گردد. اثر این رفتار این است که مقاله‌ای که در چندین گروه ارسال همزمان شده، با گذشتن سن آن از آستانهٔ انقضای تعیین‌شده در expire.ctl برای آن گروه، یکی‌یکی از پایگاه دادهٔ overview آن گروه‌ها حذف می‌شود و سپس هنگامی که از آخرین گروه خبری نیز منقضی شد، از اسپول اخبار حذف خواهد شد.

مقالاتی که در بک‌اندهای ذخیره‌سازی با انقضای خودکار مانند CNFS نگهداری می‌شوند معمولاً متفاوت بررسی می‌شوند و صرف‌نظر از expire.ctl، تا زمانی که از خود بک‌اند منقضی نشوند، منقضی نمی‌گردند. با این حال، گزینهٔ -N را ببینید.

به‌طور پیش‌فرض، expireover تمام اطلاعات overview را برای گروه‌های خبری که از سرور حذف شده‌اند پاکسازی می‌کند؛ در صورت استفاده از گزینهٔ -f این رفتار غیرفعال می‌شود.

برای افزایش سرعت بررسی وجود هر مقاله، expireover هنگام راه‌اندازی، یک فیلتر بلوم (Bloom filter) از روی فایل history می‌سازد. این کار، ورودی/خروجی تصادفی برای هر مقاله در فایل history را با یک خواندن ترتیبی واحد جایگزین می‌کند که برای اسپول‌های بزرگ بسیار حیاتی است. فیلتر بلوم یک کش فقط-مثبت (positive-only cache) است: اگر گزارش دهد مقاله‌ای احتمالاً وجود دارد، از جستجوی کند در history صرف‌نظر می‌شود. اگر گزارش دهد مقاله پیدا نشد، expireover برای تضمین درستی به جستجوی مستقیم در history متوسل می‌شود. خطاهای مثبت کاذب (گزارش نادرست فیلتر بلوم مبنی بر وجود مقاله) بی‌ضرر هستند؛ ورودی overview یتیم در اجرای بعدی فرایند انقضا پاکسازی خواهد شد.

نرخ مثبت کاذب و مصرف حافظهٔ فیلتر بلوم با تنظیم expirebloomfp در inn.conf کنترل می‌شود. مقداردهی آن به "0" فیلتر بلوم را غیرفعال می‌کند. فیلتر بلوم همچنین هنگام استفاده از فلگ -s غیرفعال می‌شود.

حذف مقاله‌ها از اسپول اخبار و تمامی پایگاه‌های دادهٔ overview به محض اینکه از هر یک از گروه‌های خبری ارسال‌شده در آن منقضی شوند، به‌جای نگه‌داشتن آن‌ها تا زمانی که از همهٔ گروه‌های خبری منقضی شوند. گزینه‌های -e و -k نمی‌توانند به‌طور همزمان استفاده شوند. در صورتی که groupbaseexpiry برابر با false باشد، این فلگ نادیده گرفته می‌شود.
استفاده از file به‌عنوان فهرست گروه‌های خبری به‌جای pathdb/active. مقدار file می‌تواند "-" باشد تا ورودی استاندارد را مشخص کند. استفاده از این فلگ مانع از پاکسازی معمول اطلاعات overview برای گروه‌های خبری حذف‌شده از سرور می‌شود.
نگه‌داشتن تمام اطلاعات overview برای یک مقاله، و همچنین خود مقاله، تا زمانی که از تمام گروه‌های خبری ارسال‌شده در آن منقضی شود. این امر می‌تواند باعث شود مقالاتی که ارسال همزمان (crosspost) شده‌اند، نسبت به آنچه قوانین expire.ctl نشان می‌دهند مدت طولانی‌تری در یک گروه خبری باقی بمانند. گزینه‌های -e و -k نمی‌توانند به‌طور همزمان استفاده شوند. اگر groupbaseexpiry برابر با false باشد، این فلگ نادیده گرفته می‌شود.
اعمال قوانین expire.ctl برای منقضی کردن مقاله‌ها حتی از روش‌های ذخیره‌سازی که قابلیت خود-انقضا (self-expire) دارند. این کار ممکن است مقالات را پیش از آنکه به‌طور «طبیعی» منقضی شوند از روش‌های ذخیره‌سازی خود-انقضا حذف کند. اگر groupbaseexpiry برابر با false باشد، این فلگ نادیده گرفته می‌شود.
به‌طور پیش‌فرض، expireover تصمیم‌گیری دربارهٔ حذف مقاله را بر اساس زمان رسیدن آن به سرور انجام می‌دهد. این بدان معناست که ممکن است مقالات کمی طولانی‌تر از حالتی که تصمیم بر پایهٔ تاریخ ارسال مقاله باشد نگهداری شوند. در صورت تعیین این گزینه، تصمیم‌گیری‌های انقضا بر پایهٔ تاریخ ارسال مقاله خواهد بود. اگر groupbaseexpiry برابر با false باشد، این فلگ نادیده گرفته می‌شود.
دستور expireover معمولاً آمار را در پایان فرایند انقضا چاپ می‌کند. گزینهٔ -q مانع از نمایش این گزارش می‌شود. اگر groupbaseexpiry برابر با false باشد، این فلگ نادیده گرفته می‌شود.
دستور expireover به‌طور معمول تنها در صورتی وجود مقالات در اسپول اخبار را بررسی می‌کند که پرس‌وجوی روش ذخیره‌سازی برای بررسی وجود داشتن آن مقاله «کم‌هزینه» در نظر گرفته شود. برای بررسی همیشگی وجود تمام مقالات صرف‌نظر از میزان مصرف منابع، از فلگ -s استفاده کنید. برای اطلاعات بیشتر دربارهٔ این معیار به storage.conf(5) مراجعه کنید.
زمان را «انحراف» می‌دهد تا expireover تصور کند در زمانی غیر از زمان جاری اجرا می‌شود. این قابلیت گه‌گاه برای وادار کردن گروه‌ها به منقضی شدن یا نشدن، بدون نیاز به تغییر expire.ctl برای آن نوبت انقضا، مفید است. offset باید یک عدد اعشاری علامت‌دار باشد که تفاوت تعداد روزها نسبت به زمان فعلی را به‌عنوان «اکنون» تعیین می‌کند. اگر groupbaseexpiry برابر با false باشد، این فلگ نادیده گرفته می‌شود.
مقاله‌ها را بلافاصله حذف نمی‌کند بلکه مسیر یا توکن مقاله را در rmfile می‌نویسد، که ورودی مناسبی برای fastrm(1) است. این کار می‌تواند سرعت حذف مقالات منقضی‌شده را برای آن دسته از روش‌های ذخیره‌سازی که در آن‌ها هر مقاله یک فایل مجزا است (مانند tradspool و timehash) به‌میزان چشمگیری افزایش دهد. برای جزئیات بیشتر به توضیحات کلیدواژهٔ delayrm در news.daily(8) مراجعه کنید. اگر groupbaseexpiry برابر با false باشد، این فلگ نادیده گرفته می‌شود.
پایین‌ترین شمارهٔ مقاله برای هر گروه خبری را هنگام انقضای آن در فایل تعیین‌شده می‌نویسد. این فایل سپس برای "ctlinnd lowmark" مناسب است. برای اطلاعات بیشتر به ctlinnd(8) مراجعه کنید.

به‌طور معمول expireover از news.daily(8) فراخوانی می‌شود، که در صورت نیاز مدیریت مواردی همچون پردازش rmfile و lowmarkfile را بر عهده دارد. با این حال، گاهی انقضای دستی یک گروه خبری خاص سودمند است. این کار را می‌توان با دستوری مشابه زیر انجام داد:

echo example.test | expireover -f - -Z <pathtmp in inn.conf>/lowmark
ctlinnd lowmark <pathtmp>/lowmark

این کار به‌ویژه زمانی سودمند است که شمار زیادی از مقالات در یک گروه خاص منقضی شده باشند اما اطلاعات overview همچنان موجود باشد؛ امری که موجب می‌شود برخی کلاینت‌ها هنگام ورود اولیه به گروه خبری، پیام‌های زیادی با مضمون «this article may have been cancelled» مشاهده کنند.

نوشته شده توسط Rob Robertson <rob@violet.berkeley.edu> و Rich $alz <rsalz@uunet.uu.net> (با همکاری Dave Lawrence <tale@uunet.uu.net>) برای InterNetNews.

active(5), ctlinnd(8), expire(8), expire.ctl(5), inn.conf(5), news.daily(8).

2026-06-12 INN 2.7.4