یک اسکریپت 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 با احتیاط بهره ببرید.

توسط پژوهشگر در 201 روز قبل ساعت 03:15
دسته بندی ها: Bash Scripting Bash Scripting for beginner
sara در 201 روز قبل ساعت 07:02

بهتر است آرشیو را در دایرکتوری جداگانه‌ای مثل /var/backups یا /tmp بسازید تا از گم شدن فایل‌ها و تکرار آرشیو جلوگیری شود. از find با -print0 و tar با --null -T - برای امن بودن با فضاها و کاراکترهای ویژه استفاده کنید. قبل از حذف، خروجی را با گزینه‌ای مانند --dry-run یا با نمایش لیست فایل‌ها بررسی کنید تا ریسک حذف فایل‌های ناخواسته کاهش یابد. به مجوزها و هم‌زمانی اجرا توجه کنید؛ ممکن است لازم باشد از sudo استفاده کنید و یا آرشیو را خارج از /var/log نگه دارید تا به فایل‌های در حال تغییر جدید دسترسی نداشته باشید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری