arash حذف خودکار فایل‌های قدیمی از QNAP پس از Sync با ویندوز – آموزش کامل با اسکریپت و زمان‌بندی

arash بدون دیدگاه
Automatically delete old files from QNAP after syncing with Windows

3 دقیقه مطالعه

 آموزش جامع مدیریت و حذف خودکار فایل‌های قدیمی همگام‌سازی‌شده از ویندوز به QNAP

در بسیاری از سازمان‌ها یا محیط‌های کاری، از نرم‌افزارهایی مثل Qsync برای همگام‌سازی یک‌طرفه فایل‌ها از سیستم‌های ویندوزی به دستگاه‌های NAS مانند QNAP استفاده می‌شود. اما یکی از چالش‌های رایج این سناریو، تجمع فایل‌های قدیمی در QNAP است که باعث پر شدن فضای ذخیره‌سازی، کند شدن سیستم، و دشواری در مدیریت فایل‌ها می‌شود.

در این مقاله به صورت کامل، کاربردی و مرحله‌به‌مرحله یاد می‌گیریم چطور فایل‌های قدیمی که مدت‌هاست تغییری نکرده‌اند را از روی QNAP به صورت خودکار حذف کنیم — بدون نیاز به حذف دستی یا نرم‌افزارهای جانبی پیچیده.


🔍 سناریوی واقعی چیست؟

فرض کنید شما یک پوشه‌ی اشتراکی در ویندوز دارید که با استفاده از نرم‌افزار Qsync Client یا NetBak Replicator به QNAP سینک شده است. اطلاعات به‌صورت یک‌طرفه (One-Way) به NAS منتقل می‌شود. با گذشت زمان، فایل‌های زیادی در QNAP باقی می‌مانند که دیگر نیازی به آن‌ها ندارید، اما:

  • Qsync هیچ قابلیتی برای حذف خودکار فایل‌های قدیمی ندارد.
  • پاک کردن دستی فایل‌ها وقت‌گیر و پرخطاست.
  • استفاده از HBS3 به دلیل محدودیت در انتخاب منبع ویندوزی امکان‌پذیر نیست.

راه‌حل حرفه‌ای این مشکل: ایجاد یک اسکریپت Shell روی QNAP برای پاک‌سازی فایل‌های قدیمی به‌صورت زمان‌بندی‌شده است.


📋 فهرست مطالب

  1. تفاوت Qsync و HBS3 در این سناریو
  2. چرا حذف فایل‌های قدیمی مهم است؟
  3. طراحی اسکریپت پاک‌سازی فایل‌های قدیمی
  4. زمان‌بندی اجرای خودکار (Cronjob)
  5. بررسی لاگ و مانیتورینگ اجرا
  6. توسعه پیشرفته‌تر اسکریپت
  7. جمع‌بندی نهایی

🔁 Qsync بهتر است یا HBS3؟ (و چرا HBS3 در اینجا کار نمی‌کند)

قابلیت HBS3 Qsync
محل اجرا روی QNAP روی ویندوز
انتقال از ویندوز ❌ محدود (فقط در نقش مقصد) ✅ بله (سورس مستقیم ویندوز)
زمان‌بندی حذف فایل‌ها ✅ دارد ❌ ندارد
همگام‌سازی یک‌طرفه بله بله
نسخه‌بندی فایل‌ها دارد ندارد
مدیریت فایل‌های قدیمی بله ❌ ندارد

نتیجه: وقتی مبدأ ویندوز باشد، HBS3 به تنهایی جوابگو نیست. بهترین گزینه استفاده از Qsync روی ویندوز است و اجرای عملیات پاک‌سازی سمت QNAP.


🧠 چرا پاک‌سازی خودکار فایل‌های قدیمی مهم است؟

مزیت توضیح
جلوگیری از پر شدن سریع فضای دیسک فایل‌های بی‌استفاده فضای زیادی اشغال می‌کنند
حفظ نظم در ذخیره‌سازی فولدرها سبک‌تر و مدیریت آسان‌تر می‌شود
کاهش فشار بر روی بکاپ‌های بعدی بکاپ‌گیری سریع‌تر و مؤثرتر انجام می‌شود
حذف ریسک خطای انسانی پاک‌سازی دستی همیشه با خطر اشتباه همراه است

👨‍💻 ساخت اسکریپت حذف خودکار فایل‌های قدیمی

🛠 مراحل ساخت:

  1. به QNAP از طریق SSH متصل شوید:
    • از Putty (ویندوز) یا ssh admin@ip-address (لینوکس/مک) استفاده کنید.
  2. مسیر ذخیره فایل‌های سینک شده را پیدا کنید، مثلاً:
    /share/CACHEDEV1_DATA/Backups/WindowsSync/
    
  3. یک اسکریپت جدید بسازید:
mkdir -p /share/CACHEDEV1_DATA/scripts
vi /share/CACHEDEV1_DATA/scripts/delete_old_files.sh
  1. متن زیر را در ویرایشگر وارد کنید:
#!/bin/bash

# مسیر پوشه‌ای که فایل‌های قدیمی در آن قرار دارند
TARGET_DIR="/share/CACHEDEV1_DATA/Backups/WindowsSync"

# فایل‌هایی که از آخرین تغییرشان بیش از این تعداد روز گذشته باشد، حذف شوند
DAYS_OLD=30

# محل ذخیره گزارش‌ها
LOG_FILE="/share/CACHEDEV1_DATA/scripts/delete_old_files.log"

echo "[$(date)] شروع اسکریپت پاک‌سازی..." >> $LOG_FILE

# پیدا کردن و حذف فایل‌ها
find "$TARGET_DIR" -type f -mtime +$DAYS_OLD -print -exec rm -f {} \; >> $LOG_FILE

echo "[$(date)] پایان اسکریپت." >> $LOG_FILE
echo "-----------------------------" >> $LOG_FILE
  1. اسکریپت را ذخیره کنید و از vi خارج شوید (ESC:wq → Enter)
  2. سپس دستور زیر را برای اجرایی کردن فایل بزنید:
chmod +x /share/CACHEDEV1_DATA/scripts/delete_old_files.sh

⏰ زمان‌بندی اجرای اسکریپت با Cron

برای اینکه این اسکریپت هر روز به‌صورت خودکار اجرا شود:

  1. کران‌تَب را ویرایش کنید:
crontab -e
  1. خط زیر را اضافه کنید (اجرا در ساعت ۳ بامداد):
0 3 * * * /share/CACHEDEV1_DATA/scripts/delete_old_files.sh
  1. ذخیره و خروج (مثل قبل: :wq)

✅ از این به بعد، فایل‌های قدیمی‌تر از ۳۰ روز، هر روز ساعت ۳ صبح به‌صورت خودکار پاک خواهند شد.


📄 مشاهده گزارش‌ها

برای بررسی فایل‌های حذف‌شده و زمان اجرای اسکریپت:

cat /share/CACHEDEV1_DATA/scripts/delete_old_files.log

یا برای دیدن فقط ۲۰ خط آخر:

tail -n 20 /share/CACHEDEV1_DATA/scripts/delete_old_files.log

🔧 توسعه‌های پیشرفته (اختیاری)

در آینده می‌توانید این اسکریپت را پیشرفته‌تر کنید:

قابلیت توضیح
حذف پوشه‌های خالی بعد از پاک‌سازی با find -type d -empty -delete
ارسال گزارش ایمیلی با استفاده از sendmail یا msmtp
هشدار در صورت خطا اضافه کردن کدهای بررسی وضعیت خروج
پشتیبان‌گیری قبل از حذف کپی کردن فایل‌ها به مسیر دیگر پیش از حذف نهایی

اگر خواستی، نسخه‌ی حرفه‌ای‌تر این اسکریپت با لاگ HTML، هشدار ایمیلی یا چند مسیر مختلف هم می‌تونم برات بنویسم.


🧾 جمع‌بندی نهایی

این راهکار ساده و مؤثر، مشکل اصلی Qsync و دیگر ابزارهای سینک یک‌طرفه رو به‌خوبی حل می‌کنه:

✅ بدون نیاز به نرم‌افزار اضافی
✅ بدون دخالت دستی
✅ با قابلیت شخصی‌سازی کامل
✅ قابل اجرا در محیط‌های کاری، شرکتی یا شخصی

برچسب ها
مطالب مرتبط

دیدگاه ها برای این نوشته بسته می باشد