TgWitness / مستندسازی

آنچه آزمایش شده است ←

منبع / شواهد

Telegram · ذخیره‌سازی و بازیابی

نسخه‌برداری، انتقال فایل‌های قدیمی‌تر به فضای ابری شما، نسخه‌های کپی‌شده تحت Object Lock و بازیابی روی دستگاه جدید.

TgWitness / مستندسازی · راه‌اندازی و بازیابی

راه‌اندازی و بازیابی

پنل سه وظیفه را جدا می‌کند:

وظیفه کارکرد آن
یک نسخه پشتیبان تهیه کنید ژورنال امضا شده، نقاط کنترل، فایل‌های نگهداری‌شده و خروجی‌های صف‌شده را به مقصد S3 پیکربندی‌شده کپی کنید.
فضای محلی رایگان پیوست‌های قدیمی‌تر انتخاب‌شده را به S3 یا یک درایو ابری rclone کپی کنید، آن‌ها را به‌طور کامل دوباره بخوانید، بایت‌های رمزگذاری‌شده را تأیید کنید، سپس نسخه محلی تأییدشده را حذف کنید.
یک نسخهٔ مدرکی را نگه دارید قفل شیء S3 را پیکربندی کنید و وضعیت نگهداری بازگردانده‌شده را بررسی کنید. سرویس باید حالت و تاریخ درخواستی را تأیید کند.

آزادسازی فضا هرگز دفترچه یادداشت امضا شده را حذف یا بازنویسی نمی‌کند. هر پیوست، شناسه اصلی SHA-256 و یک رسید بازیابی را حفظ می‌کند. فشرده‌سازی اختیاری gzip قبل از رمزگذاری احراز هویت‌شده انجام می‌شود. نام فایل‌های ابری حاوی نام‌های تلگرام، شناسه چت یا نام‌های اصلی پیوست‌ها نیست. یک پیوست می‌تواند تا ۳۲ گیگابایت باشد.

پاسخ بارگذاری به تنهایی مجوز حذف یک فایل را نمی‌دهد. TgWitness شیء رمزگذاری‌شده کامل را دانلود کرده و اندازه و SHA-256 آن را تأیید می‌کند، رسید را ذخیره می‌کند، سپس بلافاصله قبل از حذف، بایت‌های محلی را دوباره بررسی می‌کند. یک خطای بارگذاری، بازخوانی متفاوت یا لغو انتقال، فایل محلی را سر جای خود باقی می‌گذارد. اگر یک نسخه پشتیبان مدرک فعال هنوز آن فایل را کپی نکرده باشد، حذف آن نیز منتظر می‌ماند.

در این صفحه

وقتی فضای دیسک رو به اتمام است#

وقتی فضای آزاد از مقدار پارامترها ← پیوست‌ها ← فضای آزاد دیسک کمتر شود (پیش‌فرض 1 GiB)، دریافت پیوست‌ها موقتاً متوقف می‌شود و صف باقی می‌ماند. مشاهدات متنی ادامه دارند. این رفتار مستقل از اعلان‌هاست: خاموش کردن اعلان، فضای ذخیرهٔ دریافت یا حفاظت‌های ذخیره‌سازی را غیرفعال نمی‌کند.

برای اقدام زودتر، اجرای خودکار را فعال کنید، حذف فایل محلی برای آزاد کردن فضا را انتخاب کنید و انتقال اضافی هنگام کمبود فضای دیسک را فعال کنید. این قاعدهٔ اختیاری به‌طور پیش‌فرض زیر 5120 MiB فضای آزاد شروع می‌شود و دسته‌دسته ادامه می‌یابد تا 10240 MiB آزاد شود. هر دو آستانه قابل تنظیم‌اند. مقصد، حداقل سن فایل، حد دسته، بررسی با بازخوانی کامل و پیش‌نیازهای پشتیبان‌گیری شواهد همان اجرای دستی‌اند. مقصدی را خودبه‌خود فعال نمی‌کند. بررسی هر 30 ثانیه انجام می‌شود؛ خطا یا نبود پیشرفت، تلاش بعدی را پنج دقیقه عقب می‌اندازد. وضعیت و زمان تلاش مجدد پس از راه‌اندازی دوباره باقی می‌مانند. وقتی قاعده غیرفعال است، اجراهای زمان‌بندی‌شده فاصلهٔ عادی را حفظ می‌کنند.

پنل فضای آزاد، ذخیرهٔ بسته‌بندی، آماده‌بودن قاعده و فایل‌های ردشده به علت کمبود فضای موقت را نشان می‌دهد. بسته‌بندی و بازیابی پیش از شروع، حداکثر نیاز به فضای موقت و هنگام نوشتن، فضای موجود را بررسی می‌کنند. ذخیرهٔ تنظیم‌شده برای دریافت استفاده می‌شود، با حداقل 64 MiB برای عملیات ذخیره‌سازی. این بررسی‌ها سهمیهٔ سیستم فایل نیستند؛ فرایند دیگری می‌تواند بین بررسی‌ها فضا مصرف کند.

Gzip اشیای راه‌دور را بدون اتلاف داده فشرده می‌کند؛ دفتر ثبت فعال را کوچک نمی‌کند و بایگانی محلی نمی‌سازد. JPEG، ویدیو و ZIP ممکن است بسیار کم کوچک شوند یا کمی بزرگ‌تر شوند. با فعال بودن فشرده‌سازی، بسته‌بندی ممکن است موقتاً حدود دو برابر اندازهٔ پیوست به‌علاوهٔ فضای ذخیره نیاز داشته باشد. آستانهٔ شروع را برای بزرگ‌ترین فایل‌ها به‌اندازهٔ کافی زود تعیین کنید. فایل بیش‌ازحد بزرگ حفظ و گزارش می‌شود؛ فایل‌های کوچک‌تر و نسخه‌های راه‌دورِ ازپیش‌بررسی‌شده همچنان می‌توانند فضا آزاد کنند. با نسخهٔ بررسی‌شده می‌توان فایل محلی را بدون ساخت فایل بسته‌بندی دیگری حذف کرد. بازیابی نیز فضای موقت می‌خواهد و ممکن است تا فراهم‌شدن آن رد شود.

اگر فایل مناسبی برای انتقال نباشد یا مقصدی تنظیم نشده باشد، TgWitness نمی‌تواند خودکار فضا آزاد کند. مدیریت ذخیره‌سازی هرگز دفتر ثبت امضاشده را کوتاه یا بازنویسی نمی‌کند. برای مشاهدات متنی جدید همچنان فضا لازم است.

یک مقصد را متصل کنید#

در بخش «افزودنی‌ها» → «فضای ذخیره‌سازی و دیسک» → «مدیریت ذخیره‌سازی»، وظیفه و مقصد را انتخاب کرده، آن را ذخیره کنید، سپس «آزمایش بارگذاری و دانلود» را برگزینید. این آزمایش یک پروب کوچک تصادفی را بارگذاری کرده و آن را دوباره می‌خواند. این کار از محتوای تلگرام استفاده نمی‌کند.

برای S3، از endpoint، region و bucket واقعی ارائه‌دهنده استفاده کنید. Wasabi، Backblaze، Cloudflare R2 و سایر خدمات سازگار از همان تنظیمات S3 استفاده می‌کنند. سازگاری API به تنهایی به معنای پشتیبانی از Object Lock نیست. حالت Governance ممکن است به یک مدیر مجاز اجازه دهد تا از نگهداری (retention) عبور کند؛ حالت Compliance محدودیت‌های متفاوتی دارد. قبل از اتکا به نگهداری، وضعیت بازگردانده‌شده Object Lock را بخوانید.

برای یک مقصد rclone، یک ریموت با استفاده از تنظیمات ارائه‌دهنده rclone ایجاد کنید و ریموت مذکور را جای‌گذاری کنید [name] بخش را در پنل قرار دهید. ابزار کمکی نصب‌شده از MEGA، Google Drive، OneDrive، Dropbox، Box، pCloud و سایر ارائه‌دهندگانی که در انتخابگر نمایش داده شده‌اند، پشتیبانی می‌کند. اعتبارنامه‌ها در گاوصندوق رمزگذاری‌شده این فضای کاری ذخیره می‌شوند. به‌روزرسانی‌های OAuth نیز دوباره در گاوصندوق ذخیره می‌شوند. اعتبارنامه‌ها به رویدادهای گزارش (journal) اضافه نمی‌شوند و در دانلودهای بازیابی گنجانده نمی‌شوند.

این ابزار کمکی در داخل فضای کاری نصب می‌شود، با یک نسخه سنجاق‌شده و یک پوشهٔ «SHA-256». این فایل به مسیر (PATH) سیستم اضافه نمی‌شود. فایل‌های پیکربندی و فایل‌های کاری، فایل‌های موقتی در همان فضای کاری هستند. اتصالات از راه دور مبتنی بر فرمان و فایل‌های محلی رد می‌شوند. rclone در حال حاضر برای درخواست‌های خارجی به یک مسیر «مستقیم» (Direct) که صراحتاً انتخاب شده باشد نیاز دارد. برای یک مسیر SOCKS5 یا HTTP در فضای کاری، از ذخیره‌سازی بومی S3 استفاده کنید؛ rclone یک مسیر غیرفعال را بی‌صدا دور نمی‌زند.

فایل بازیابی را نگه دارید#

گزینه «ذخیره فایل بازیابی پس از کپی کردن فایل‌ها» را انتخاب کرده و آن را در مکانی جدا از محل نصب نگهداری کنید. این فایل حاوی کلید رمزگشایی و رسیدهای اشیاء امضا شده است، بنابراین آن را به عنوان پشتیبان کلید خصوصی در نظر بگیرید. پیکربندی راه دور اصلی و اعتبارنامه‌های مقصد را نیز به طور جداگانه نگهداری کنید. فایلی که برای بازیابی قبل از کپی بعدی گرفته می‌شود، حاوی رسید آن فایل بعدی نخواهد بود.

اثر انگشت کلید امضا باید از قبل به طور مستقل ثبت شده باشد. امضایی که تنها با کلیدی که در همان فایل ارائه شده بررسی شود، مشخص نمی‌کند که فایل بازیابی متعلق به چه کسی است.

برای تعمیر رسیدهای ذخیره‌سازی گم‌شده در یک فضای کاری موجود، گزینه «بازیابی فایل‌ها» را از یک فایل بازیابی ذخیره‌شده باز کرده و آن فایل را انتخاب کنید. این پنل امضا را بررسی می‌کند و به کلید امضای همان فضای کاری نیاز دارد. این گزینه از جایگزینی یک کلید ذخیره‌سازی متفاوت خودداری می‌کند. سپس «بازیابی همه فایل‌ها» را انتخاب کنید. بازیابی، قانون ذخیره‌سازی خودکار را متوقف می‌کند تا نوبت برنامه‌ریزی‌شده بعدی نتواند فوراً فایل‌های بازیابی‌شده را دوباره حذف کند. پس از اتمام کار با نسخه‌های محلی، قانون را مجدداً فعال کنید.

فرآیند بازیابی، متن رمزگذاری‌شده را تأیید می‌کند، رمزگشایی را احراز هویت می‌کند، در صورت لزوم فشرده‌سازی را برعکس می‌کند و متن ساده اصلی را بررسی می‌کند SHA-256 قبل از قرار دادن یک فایل در media/یک شیء راه دور خراب هرگز یک فایل محلی را جایگزین نمی‌کند. یک فایل محلی موجود با بایت‌های متفاوت به جای اینکه بازنویسی شود، برای بازبینی نگه داشته می‌شود.

بازیابی پس از از دست دادن نصب#

TgWitness را روی دستگاه دیگری نصب کنید. از فایل بازیابی خصوصی، اثر انگشت جداگانه ضبط‌شده و اعتبارنامه‌های مقصد اصلی استفاده کنید:

python -m tgwitness.storage recover \
  --recovery storage-recovery.json \
  --fingerprint TRUSTED_WORKSPACE_SHA256 \
  --credentials original-rclone.conf \
  --output recovered-attachments

برای S3، --credentials اشاره به یک فایل JSON خصوصی با access_key و secret_key؛ فایل بازیابی امضا شده، تنظیمات مقصد را فراهم می‌کند. این فرمان از یک اتصال خارجی مستقیم استفاده می‌کند و زمانی که یک ریموت rclone به آن نیاز دارد، کمک‌یار پین‌شده را دانلود می‌کند. این فرمان وجود یک دایرکتوری خروجی موجود را رد می‌کند.

بایت‌های اصلی بازیابی‌شده به recovered-attachments/media/، نام‌گذاری شده توسط SHA-256 خود. recovery-log.jsonl یک رکورد بدون امضا از عملیات بازیابی است. این فرمان یک ژورنال امضا شده از دست رفته یا کلید امضای آن را بازسازی نمی‌کند. برای این موارد یک نسخه پشتیبان کامل از فضای کاری را نگه دارید. یک فایل بازیابی ذخیره‌سازی، یک نسخه پشتیبان کامل از فضای کاری نیست.

ربات اپراتور و اعلان‌های تکمیل#

ربات تلگرام متعلق به اپراتور است. آن را از طریق BotFather ایجاد کنید و توکن، چت مقصد و شناسه کاربران تلگرام مجاز صریح را در پنل تنظیم کنید. هم فرستنده و هم چت باید مطابقت داشته باشند. پیام‌ها و دستورات فوروارد شده از ربات‌های دیگر نادیده گرفته می‌شوند.

/status و /stats در حالت پیش‌فرض فقط وضعیت در دسترس هستند. حالت کنترل اختیاری اضافه می‌کند /pause, /resume و /copy. /copy درخواست وظیفه ذخیره‌سازی پیکربندی‌شده را می‌کند؛ این بدان معنا نیست که بارگذاری از راه دور قبلاً به پایان رسیده است. دستورات نمی‌توانند URLها، فایل‌ها یا برنامه‌های شل دلخواه را فراهم کنند.

از تنظیمات اعلان جداگانه برای هشدارها و اعلان‌های اتمام کار استفاده کنید. اعلان‌های اتمام کار، یک خروجی‌گیری حساب با فاصله‌ها را از یک خروجی‌گیری کامل متمایز می‌کنند و شمارش‌های تاریخچه و ذخیره‌سازی را نشان می‌دهند. گزیده‌های پیام، مگر اینکه به طور جداگانه در تنظیمات اعلان فعال شده باشند، گنجانده نمی‌شوند. انتخابگر سرویس از کاتالوگ واقعی نصب‌شده Apprise و نه از یک مجموعه ثابت از نمونه‌های ارائه‌دهنده، تولید می‌شود.