پاکسازی خودکار فایل‌های قدیمی Cloudflare R2 با n8n

پاکسازی خودکار فایل‌های قدیمی Cloudflare R2 با n8n

8 دقیقه مطالعه · منتشر شده ۱۴۰۵/۵/۷

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 4418 · منبع: کاتالوگ Pixori

اتوماسیون پاکسازی Cloudflare R2: حذف فایل‌های قدیمی‌تر از ۲ هفته با اعلان تلگرام

دسته‌بندی‌ها: DevOps

گره‌های مورد استفاده:

  • n8n-nodes-base.scheduleTrigger
  • n8n-nodes-base.s3
  • n8n-nodes-base.code
  • n8n-nodes-base.telegram
  • n8n-nodes-base.stickyNote

---

نمای کلی گردش کار

این گردش کار فرآیند پاکسازی فایل‌ها در سطل (bucket) Cloudflare R2 شما را که قدیمی‌تر از دو هفته هستند، خودکار می‌کند. این گردش کار برای اجرا بر اساس یک برنامه زمان‌بندی شده طراحی شده است، به طور خودکار فایل‌های منسوخ شده را حذف می‌کند و سپس برای هر فایل حذف شده، یک اعلان به تلگرام ارسال می‌کند. این روش برای حفظ بهداشت فضای ذخیره‌سازی، مدیریت هزینه‌ها با حذف پشتیبان‌ها یا داده‌های قدیمی، و آگاهی از فعالیت‌های پاکسازی ایده‌آل است.

گردش کار به مراحل منطقی زیر تقسیم می‌شود:

1. محرک زمان‌بندی شده: گردش کار را روزانه در زمان مشخصی آغاز می‌کند.

2. دریافت فایل‌های Cloudflare R2: لیستی از تمام فایل‌ها را از سطل R2 و پوشه مشخص شده شما بازیابی می‌کند.

3. فیلتر کردن فایل‌های قدیمی: فایل‌هایی را شناسایی می‌کند که آخرین بار بیش از دو هفته پیش اصلاح شده‌اند.

4. حذف فایل‌ها: فایل‌های قدیمی شناسایی شده را از سطل Cloudflare R2 حذف می‌کند.

5. ارسال اعلان‌های تلگرام: حذف موفقیت‌آمیز هر فایل را از طریق یک پیام تلگرام تأیید می‌کند.

---

جزئیات گره‌ها

۱. محرک زمان‌بندی شده

  • هدف: شروع خودکار اجرای گردش کار به صورت روزانه.
  • نوع گره: Schedule Trigger
  • پیکربندی: تنظیم شده برای اجرا هر روز ساعت ۰۹:۰۰ (۹ صبح).
  • اتصالات:

* ورودی: ندارد (نقطه ورود گردش کار).

* خروجی: به گره دریافت فایل‌های Cloudflare R2 متصل می‌شود.

  • جزئیات فنی: typeVersion: 1.2
  • یادداشت‌ها: معمولاً یک یادداشت چسبان (sticky note) با متنی مانند "Schedule\nRun from setup schedule time" در اینجا استفاده می‌شود.

۲. دریافت فایل‌های Cloudflare R2

  • هدف: بازیابی تمام فایل‌ها و فراداده‌های آن‌ها از یک پوشه خاص در سطل Cloudflare R2 شما با استفاده از API سازگار با S3 آن.
  • نوع گره: S3 (n8n-nodes-base.s3)
  • پیکربندی:

* عملیات: getAll

* سطل (Bucket): نام سطل Cloudflare R2 شما (مثلاً "bucketName").

* کلید پوشه (Folder Key): مسیر پوشه در سطل (مثلاً "Folder/").

* بازگرداندن همه نتایج (Return all results): true

* بازیابی فراداده مالک (Fetch owner metadata): false (معمولاً برای این کار لازم نیست).

  • اتصالات:

* ورودی: از محرک زمان‌بندی شده.

* خروجی: به گره فیلتر کردن فایل‌های قدیمی متصل می‌شود.

  • اعتبارنامه‌ها (Credentials): نیاز به اعتبارنامه‌های حساب S3 Cloudflare (Access Key ID و Secret Access Key) دارد که در n8n پیکربندی شده‌اند.
  • جزئیات فنی: typeVersion: 1
  • یادداشت‌ها: یک یادداشت چسبان ممکن است با متن "R2 Object (S3)\nGet file from Cloudflare R2 Object (S3)" خوانده شود.

۳. فیلتر کردن فایل‌های قدیمی

  • هدف: پردازش لیست فایل‌های دریافتی از گره S3 و فیلتر کردن فقط آن‌هایی که تاریخ LastModified آن‌ها قدیمی‌تر از ۱۴ روز است.
  • نوع گره: Code (JavaScript)
  • پیکربندی:

* کد:

```javascript

const TWO_WEEKS_IN_MS = 14 24 60 60 1000;

const now = Date.now();

// دسترسی به آیتم‌های گره S3 قبلی

const files = $items("S3", 0);

// فیلتر کردن فایل‌های قدیمی‌تر از دو هفته

return files.filter(file => {

const lastModifiedTimestamp = new Date(file.json.LastModified).getTime();

const fileAge = now - lastModifiedTimestamp;

return fileAge > TWO_WEEKS_IN_MS;

});

```

  • اتصالات:

* ورودی: از دریافت فایل‌های Cloudflare R2 (گره S3).

* خروجی: به گره حذف فایل‌ها متصل می‌شود.

  • جزئیات فنی: typeVersion: 2
  • یادداشت‌ها: یک یادداشت چسبان می‌تواند بگوید "Filter File\nFilter file for removal".

۴. حذف فایل‌ها

  • هدف: حذف هر فایلی که قدیمی‌تر از دو هفته شناسایی شده است.
  • نوع گره: S3 (n8n-nodes-base.s3)
  • پیکربندی:

* عملیات: delete

* سطل (Bucket): نام سطل Cloudflare R2 شما (همانند گره دریافت).

* کلید فایل (File Key): از یک عبارت برای تنظیم پویا کلید فایل از ورودی استفاده کنید: ={{ $json.Key }}. این عبارت ویژگی Key را از داده‌های JSON آیتم فایل فیلتر شده می‌کشد.

  • اتصالات:

* ورودی: از فیلتر کردن فایل‌های قدیمی (گره Code).

* خروجی: به گره ارسال اعلان‌های تلگرام متصل می‌شود.

  • اعتبارنامه‌ها (Credentials): از همان اعتبارنامه‌های حساب S3 Cloudflare گره دریافت استفاده می‌کند.
  • جزئیات فنی: typeVersion: 1
  • یادداشت‌ها: یک یادداشت چسبان ممکن است بگوید "Delete File\nRemove file from cloud".

۵. ارسال اعلان‌های تلگرام

  • هدف: ارسال پیام تأیید به یک چت تلگرام مشخص برای هر فایلی که با موفقیت حذف شده است.
  • نوع گره: Telegram
  • پیکربندی:

* شناسه چت (Chat ID): شناسه چت تلگرام شما (مثلاً "TELEGRAM_CHAT_ID").

* متن (Text): از یک عبارت برای گنجاندن نام فایل حذف شده استفاده کنید:

```

✅ Removed R2 file:

👌 {{ $('Code').item.json.Key }}

```

(توجه: $('Code') به خروجی گره "Code" اشاره دارد. اگر نام گره را تغییر داده‌اید، آن را تنظیم کنید.)

  • اتصالات:

* ورودی: از حذف فایل‌ها (گره S3).

* خروجی: ندارد (پایان گردش کار).

  • اعتبارنامه‌ها (Credentials): نیاز به اعتبارنامه‌های API تلگرام (Bot Token) دارد که در n8n پیکربندی شده‌اند.
  • جزئیات فنی: typeVersion: 1.2
  • یادداشت‌ها: یک یادداشت چسبان می‌تواند بگوید "Telegram Notify\nNotify file removal success".

---

جدول خلاصه گردش کار

نام گرهنوع گرهعملکرد اصلیگره(های) ورودیگره(های) خروجیمثال یادداشت چسبان
محرک زمان‌بندی شدهSchedule Triggerشروع روزانه گردش کارندارددریافت فایل‌های R2Schedule\nRun from setup schedule time
دریافت فایل‌های R2S3لیست اشیاء در سطل R2محرک زمان‌بندی شدهفیلتر کردن فایل‌های قدیمیR2 Object (S3)\nGet file from Cloudflare R2 Object (S3)
فیلتر کردن فایل‌های قدیمیCodeانتخاب فایل‌های > ۲ هفته قدیمیدریافت فایل‌های R2حذف فایل‌هاFilter File\nFilter file for removal
حذف فایل‌هاS3حذف فایل‌های قدیمی شناسایی شدهفیلتر کردن فایل‌های قدیمیارسال اعلانDelete File\nRemove file from cloud
ارسال اعلان‌های تلگرامTelegramاطلاع‌رسانی درباره فایل‌های حذف شدهحذف فایل‌هانداردTelegram Notify\nNotify file removal success

(توجه: گره‌های "Sticky Note" خود برای حاشیه‌نویسی هستند و اتصالات ورودی/خروجی مستقیمی در منطق گردش کار ندارند.)

---

نحوه بازسازی این گردش کار

1. شروع یک گردش کار جدید: در نمونه n8n خود، یک گردش کار جدید ایجاد کنید.

2. افزودن محرک زمان‌بندی شده:

* نوع گره: Schedule Trigger.

* آن را طوری پیکربندی کنید که روزانه در زمان دلخواه شما اجرا شود (مثلاً ۰۹:۰۰).

3. افزودن گره S3 (دریافت):

* نوع گره: S3 (n8n-nodes-base.s3).

* عملیات: getAll.

* نام سطل Cloudflare R2 خود را تنظیم کنید.

* کلید پوشه (مثلاً "backups/") را مشخص کنید.

* بازگرداندن همه نتایج را فعال کنید.

* اعتبارنامه‌های S3 Cloudflare خود را پیکربندی کنید.

* ورودی آن را از محرک زمان‌بندی شده متصل کنید.

4. افزودن گره Code (فیلتر):

* نوع گره: Code.

* زبان: JavaScript.

* کد جاوا اسکریپت ارائه شده در بخش "فیلتر کردن فایل‌های قدیمی" بالا را جای‌گذاری کنید.

* ورودی آن را از اولین گره S3 متصل کنید.

5. افزودن گره S3 (حذف):

* نوع گره: S3 (n8n-nodes-base.s3).

* عملیات: delete.

* نام سطل را تنظیم کنید (همانند قبل).

* برای کلید فایل، از عبارت زیر استفاده کنید: ={{ $json.Key }}.

* از همان اعتبارنامه‌های S3 Cloudflare استفاده کنید.

* ورودی آن را از گره Code متصل کنید.

6. افزودن گره Telegram (اطلاع‌رسانی):

* نوع گره: Telegram.

* شناسه چت خود را وارد کنید.

* فیلد متن را با استفاده از عبارت زیر پیکربندی کنید:

```

✅ Removed R2 file:

👌 {{ $('Code').item.json.Key }}

```

* اعتبارنامه‌های تلگرام خود (Bot Token) را پیکربندی کنید.

* ورودی آن را از دومین گره S3 متصل کنید.

7. اتصال گره‌ها: اطمینان حاصل کنید که گره‌ها به ترتیب زیر متصل شده‌اند: محرک زمان‌بندی شدهS3 (دریافت)Code (فیلتر)S3 (حذف)Telegram.

8. تست: گردش کار را ذخیره کنید. می‌توانید آن را به صورت دستی اجرا کنید تا پیکربندی را آزمایش کنید. اطمینان حاصل کنید که اعتبارنامه‌های Cloudflare شما مجوزهای لازم (ListBucket, DeleteObject) را دارند و ربات تلگرام شما مجاز به ارسال پیام به شناسه چت مشخص شده است.

---

ملاحظات مهم و منابع

  • راه‌اندازی Cloudflare R2: اطمینان حاصل کنید که سطل Cloudflare R2 شما به درستی پیکربندی شده است و اعتبارنامه‌های API سازگار با S3 را با مجوزهای مناسب (حداقل ListBucket و DeleteObject) ایجاد کرده‌اید. به مستندات Cloudflare R2 مراجعه کنید.
  • ربات تلگرام: شما باید یک ربات تلگرام با استفاده از BotFather ایجاد کرده و توکن API آن را دریافت کنید. همچنین به شناسه چت گروه یا کاربری که می‌خواهید اعلان‌ها را دریافت کنید، نیاز دارید. در Telegram Bot API بیشتر بیاموزید.
  • زمان‌بندی: گره Schedule Trigger گزینه‌های زمان‌بندی انعطاف‌پذیری را ارائه می‌دهد. برای جزئیات به مستندات n8n Schedule Trigger مراجعه کنید.
  • مدیریت خطا: برای استفاده در محیط عملیاتی، مراحل مدیریت خطا را در نظر بگیرید (مانند استفاده از گره‌های Error Trigger یا منطق پیچیده‌تر در گره Code) برای مدیریت خرابی‌های احتمالی API یا مسائل مربوط به مجوزها.
  • محدودیت‌های نرخ (Rate Limits): به محدودیت‌های نرخ احتمالی API که توسط Cloudflare R2 یا تلگرام اعمال می‌شود، توجه داشته باشید، به خصوص اگر تعداد زیادی فایل برای حذف یا ارسال اعلان دارید.

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار n8n چه کاری انجام می‌دهد؟

این گردش کار به طور خودکار فایل‌هایی را که قدیمی‌تر از دو هفته در سطل Cloudflare R2 شما هستند، شناسایی و حذف می‌کند و سپس از طریق تلگرام به شما اطلاع می‌دهد.

چه گره‌هایی در این گردش کار استفاده شده‌اند؟

گره‌های اصلی مورد استفاده عبارتند از: Schedule Trigger، S3 (برای Cloudflare R2)، Code (برای فیلتر کردن) و Telegram (برای اعلان).

چگونه می‌توانم این گردش کار را برای سطل R2 خود پیکربندی کنم؟

شما باید اعتبارنامه‌های S3 Cloudflare خود را در n8n تنظیم کنید، نام سطل و مسیر پوشه مورد نظر را مشخص کنید و زمان‌بندی اجرای گردش کار را تنظیم نمایید.

چرا باید فایل‌های قدیمی را از Cloudflare R2 حذف کنم؟

حذف فایل‌های قدیمی به مدیریت هزینه‌های ذخیره‌سازی، آزاد کردن فضا و حفظ بهداشت کلی فضای ذخیره‌سازی ابری شما کمک می‌کند.

workflowهای مرتبط

این workflow در کاتالوگ Pixori.me بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.