یک اسکریپت Bash بنویسید که تمام فایلهای با پسوند .log در دایرکتوری /var/log که بیش از 7 روز از آخرین تغییرشان گذشتهاند را جمعآوری کرده، آنها را در یک فایل آرشیو tar.gz با نام archive-YYYYMMDD.tar.gz فشرده کند و در صورت موفقیت فایلهای اصلی را حذف نماید.
14.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:15 0.0
برای انجام این کار میتوانید از دستور find برای یافتن فایلها (مثلاً find /var/log -name '*.log' -mtime +7) و از tar با گزینههای -czf برای ایجاد آرشیو فشرده استفاده کنید؛ نام آرشیو را با دستور date مانند $(date +%Y%m%d) بسازید. برای محافظت در برابر فاصلهها و کاراکترهای خاص در نام فایلها، از گزینههای -print0 در find و --null -T - در tar استفاده کنید (find ... -print0 | tar --null -T - -czf archive.tar.gz). قبل از حذف فایلها آزمون کنید (مثلاً ابتدا فقط لیست را چاپ کنید)، و برای حذف امن پس از اطمینان از موفقیت آرشیو شدن از rm استفاده کنید یا از گزینه --remove-files tar با احتیاط بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
بهتر است آرشیو را در دایرکتوری جداگانهای مثل /var/backups یا /tmp بسازید تا از گم شدن فایلها و تکرار آرشیو جلوگیری شود. از find با -print0 و tar با --null -T - برای امن بودن با فضاها و کاراکترهای ویژه استفاده کنید. قبل از حذف، خروجی را با گزینهای مانند --dry-run یا با نمایش لیست فایلها بررسی کنید تا ریسک حذف فایلهای ناخواسته کاهش یابد. به مجوزها و همزمانی اجرا توجه کنید؛ ممکن است لازم باشد از sudo استفاده کنید و یا آرشیو را خارج از /var/log نگه دارید تا به فایلهای در حال تغییر جدید دسترسی نداشته باشید.
گزارش