50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

درخواست کد حذف فایل های با عمر بیش از 25 ساعت در میکروتیک

سلام. من به دنبال یه اسکریپت میکروتیک میگردم که فایل های با عمر 25 ساعت به بالا رو حذف کنه. فرمت هم که فرمت فایل بکاپ هست.

فایل .backup و .rsc

مرسی

پرسیده شده در 1397/07/03 توسط

3 پاسخ

0

اسکریپت آماده برای اینکار بعید میدانم وجود داشته باشد و نوشتنش هم کمی زمان بر است.

اگر خودتان با اسکریپت نویسی میکروتیک آشنایی دارید و میتوانید بنویسید بفرمایید روش رو بهتون بگم.

اما پیشنهاد میکنم روش بکاپ گیری رو عوض کنید. فضای روتر محل مناسبی برای نگهداری بکاپ نیست به دلایل متعدد. اسکریپتی داشته باشید که اسم فایل های بکاپ رو با تاریخ و ساعت ساخته شدن ایجاد میکند و روی ftp آپلود میکند و سپس از روی روتر حذف میکند.

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

:local ts [/system clock get time]
:set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8])
:local ds [/system clock get date]
:set ds ([:pick $ds 7 11].[:pick $ds 0 3].[:pick $ds 4 6])
:local identity [/system identity get name]
:local fname1 ($identity."-".$ds."-".$ts.".backup")
:local fname2 ($identity."-".$ds."-".$ts.".rsc")
/system backup save name=$fname1
/export file=$fname2
:log info message=systemBackupFinished;
/tool fetch address=<FTP_ADDRESS> src-path=$fname1 user=<USERNAME> mode=ftp password=<PASSWORD> dst-path=("/backup/".$fname1) upload=yes;
/tool fetch address=<FTP_ADDRESS> src-path=$fname2 user=<USERNAME> mode=ftp password=<PASSWORD> dst-path=("/backup/".$fname2) upload=yes;
:delay 60s;
/file remove $fname1
/file remove $fname2
پاسخ در 1397/07/03 توسط
0

سلام دوست عزیز

یه اسکریپت برای روشی که فرمودید رو قبل از طرح سوال هم داشتم اما ما بالای 500 تا دستگاه داریم و روزانه از همشون بکاپ میگیرم. اما میخوایم که یه فایل بکاپ هم روی خود دستگاه بمونه. چونکه زیاد به دستگاه حمله میشه و میخوام که هم بکاپ روی سرور باشه و هم خود دستگاه تا بشه در هر صورتی بکاپ رو بهش برگردوند.

این اسکریپت هم خودم ویرایش کردم. دو تا فایل میسازه و روی سرور آپلود میکنه اما من راه حلی برای حفظ بکاپ جدید روی دستگاه ندارم هنوز. شاید برای کسی دیگه مفید بود:


log info "Automatic FTP Backup Started"
:global thisdate [/system clock get date]
:global datetimestring ([:pick $thisdate 0 3] ."-" . [:pick $thisdate 4 6] ."-" . [:pick $thisdate 7 11])

/system backup save name="$[/system identity get name]_$datetimestring" 
:log info "(1/7) Running Backup Script :)"
:delay 2s
:log info "(2/7) System Backup Done :)"
:delay 2s
/export compact file="$[/system identity get name]_$datetimestring" 
:log info "(3/7) Config export Done :)"
:delay 2s
:log info "(4/7) Sending Backup Files to Sisicom FTP Server............."
/tool fetch address=x.x.x.x src-path="$[/system identity get name]_$datetimestring.backup" user=yourFTPUser password=yourFTPPassword port=21 upload=yes mode=ftp dst-path="/asphalt/$[/system identity get name]_$datetimestring.backup"
:delay 1s
:log info "(5/7) Sending System Backup Done :)"
/tool fetch address=x.x.x.x src-path="$[/system identity get name]_$datetimestring.rsc" user=yourFTPUser password=yourFTPPassword port=21 upload=yes mode=ftp dst-path="/asphalt/$[/system identity get name]_$datetimestring.rsc"
:delay 1s
:log info "(6/7) Sending Config Export Done :)"
/file remove "$[/system identity get name]_$datetimestring.backup"
/file remove "$[/system identity get name]_$datetimestring.rsc"
:log info "(7/7) Removing Local Backup Files Done :)"
:delay 2s
:log info "Backup Finished Successfully ...!!!! Good Luck ;)"

پاسخ در 1397/07/08 توسط
0

چون کاربردی بود این اسکریپت رو آماده کردم که فایل های با عمر بیش از یک روز رو حذف میکنه.

میتونید داخل scheduler روزانه اجراش کنید.

تست هم شده کاملا درست کار میکنه:

:local months {"jan";"feb";"mar";"apr";"may";"jun";"jul";"aug";"sep";"oct";"nov";"dec"}
  
:local dt [/system clock get date]
:local dtyr [:pick $dt 7 11]
:local dtmo [:find $months [:pick $dt 0 3]]
:if ($dtmo < 10) do={ :set dtmo ("0" . $dtmo); }
:local dtday [:pick $dt 4 6]
:local newDate ($dtyr.$dtmo.$dtday)

:foreach i in=[file find] do={
	:local new [file get $i creation-time]
	:local nyr [:pick $new 7 11]
	:local nmo [:find $months [:pick $new 0 3]]
	:if ($nmo < 10) do={ :set nmo ("0" . $nmo); }
	:local nday [:pick $new 4 6]
	:local newFile ($nyr.$nmo.$nday)
	:local fileName [/file get $i name]
	:if (($newDate - $newFile) > 1) do={
		/file remove [find name="$fileName"]
		/log warning "file $fileName removed"
	}
}
پاسخ در 1397/07/09 توسط

پاسخ شما