انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید




نویسنده موضوع: پاک کردن فایل های قدیمی  (دفعات بازدید: 470 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Divan

  • Jr. Member
  • *
  • ارسال: 86
  • جنسیت : پسر
  • لینوکس=خلاقیت
پاک کردن فایل های قدیمی
« : 14 اسفند 1399، 11:44 ق‌ظ »
سلام دوستان
یه تعداد زیادی فایل دارم که از چندین سرور آرسینک میشه روی یک سرور. اسم فایلا مشخص نیست. تاریخ فایلاهم تاریخ ساخت هستش. میخوام که هر فایلی که سینک میشه روی این سرور بعد از 48ساعت پاک بشه
https://s17.picofile.com/file/8426891942/screen.jpg
توی سرچ ها به این لینک رسیدم که قدیمیه
https://stackoverflow.com/questions/13489398/delete-files-older-than-10-days-using-shell-script-in-unix
اما ساخت کرون جاب و استفاده از این شل اسکریپتو بلد نیستم و اینکه این اسکریپت از کجا میفهمه فایل قدیمیه؟
کسی میتونه کمکم بکنه؟
Divan Dorraj

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : پاک کردن فایل های قدیمی
« پاسخ #1 : 14 اسفند 1399، 01:21 ب‌ظ »
اون شل اسکریپت از find استفاده میکنه تا فایل‌هایی رو پیدا کنه که با txt. تموم میشن و تنظیم شده که فقط توی یه دایرکتوری خاص دنبال اون فایل‌ها بگرده. اگه هم دایرکتوری توی اون دایرکتوری بود، اون رو نگرده
آخرش هم یه فایل توی همون دایرکتوری درست می‌کنه که توش نوشته کی اینکار انجام شده، چقدر زمان برده و چه چیزی رو پاک کرده.
بازهم سوالی داشتید بپرسید.
میدونید که زکات علم نشر آن است

آفلاین Divan

  • Jr. Member
  • *
  • ارسال: 86
  • جنسیت : پسر
  • لینوکس=خلاقیت
پاسخ : پاک کردن فایل های قدیمی
« پاسخ #2 : 15 اسفند 1399، 01:49 ب‌ظ »
همونطور که در عکسی که ارسال کردم خدمتتون میبینید من میخوام دایرکتوری قدیمی رو پاک بکنه. این دایرکتوری ها اصلی هستند و داخلشون بیش از 100 فایل و دایرکتوری دیگه هست.
چطوری تغییرش بدم که دایرکتوری قدیمی از 48ساعتو پاک بکنه؟
Divan Dorraj

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5125
  • جنسیت : پسر
پاسخ : پاک کردن فایل های قدیمی
« پاسخ #3 : 15 اسفند 1399، 03:40 ب‌ظ »
اگه اون پوشه‌ها توی یه مسیر خاص باشند خیلی راحت میشه با این دستور کار شما رو انجام داد. (به شکل‌های دیگه هم میشه)
find /path/to/dir -type d -ctime +2 -exec sudo rm -rf {} +به جای /path/to/dir/ مسیر جایی که اون پوشه‌ها ذخیره میشن رو بدید.
اگه دسترسی نوشتن روی اون پوشه‌ها داشته باشید، لازم نیست از sudo توی این قسمت استفاده کنید.
-exec sudo rm -rf {} +
اون اسکریپت همین کار رو می‌کنه ولی روی فایل‌هایی که با txt. تموم میشن و بعدش یه فایل توی همون مسیر که اجرا شده میسازه و توش می‌نویسه که چیکار کرده.

شما میتونید دستور بالا رو به فایل /etc/crontab اضافه کنید. ولی بهتره که برید توی پوشه /etc/cron.d/ و اونجا یه فایل به هر اسمی خواستید درست کنید و این رو داخلش بنویسید
0    */2    *    *    *    root    find /path/to/dir -type d -ctime +10 -exec rm -rf {} +این هر دو ساعت یکبار سر دقیقه 0 اجرا می‌شه. میتونید تنظیم کنید که به‌جای روت، با کاربر خودتون اجرا بشه.

یا اینکه می‌تونید از همون اسکریپت استفاده کنید فقط به‌جای path که اون بالا تعریف شده مسیر خودتون رو بدید
دستور find رو هم مثل بالا بنویسید، فقط قبل exec- اینو اضافه کنید print-
و آخر اینکه جلوی days عدد 2 رو بزارید
بعد اسکریپت رو ذخیره کنید ولی توی فایل کرون به جای find و ادامش، این رو بنویسید
/bin/bash /path/to/scriptفقط اینکه اسکریپت بالا با هر بار اجرا شدن یه فایل توی مسیری که اجرا شده درست میکنه و میگه چیکار کرده که ممکنه بعد یه مدت اون فایل‌ها زیاد بشن.
اگه به اون لاگ‌ها نیاز ندارید بهتره همینطوری دستور رو توی کرون بنویسید.
میدونید که زکات علم نشر آن است