定時自動清除檔案!

回覆文章
yehlu
Site Admin
文章: 3244
註冊時間: 2004-04-15 17:20:21
來自: CodeCharge Support Engineer

定時自動清除檔案!

文章 yehlu »

http://tw.myblog.yahoo.com/bullock0425/ ... &next=1434

在unix-like系統上,定時砍檔。砍掉120日以前的檔案!

要怎麼處理?
簡單!運用find指令 (註:example 1)就行。
先利用find執行一下掃檔檢視的功能,成功找到想砍的檔案群之後,
再變化一下指令 (註:example 2),寫成簡單的script,放給cron執行就成了!

example 1:
find /find-path -type f -mtime +120 -exec ls -lhrt {} \;
找出120天以上的舊檔案!

example 2:
find /find-path -type f -mtime +120 -exec rm -f {} \;
找出120天以上的舊檔案,並且砍掉!

OK!談談在windows 系統下怎麼辦到這鳥事。

以下source code 擷取自 jerry_IT資訊技術手扎
內容存成 DelFiles.vbs 即可點點(滑鼠動作)執行,刪除三天以上,放在E:\Temp裡的檔案!
+=========================================================+
Option Explicit

WScript.Echo("作業開始執行:" & Date & " " & Time)

Dim FSO, agoDays, modifiedDate, delFolder

' 指定 n 天前的檔案,現在是 3 天前
agoDays = 3
' 欲刪除檔案所在之目錄
delFolder = "E:\Temp"
' == 結束 ==

' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")

' 取得檔案的修改日期
modifiedDate = DateAdd("d", -agoDays, Date)

' 呼叫刪除檔案的子程序
DelFilesInFolder FSO.GetFolder(delFolder)

' 刪除檔案的子程序
Sub DelFilesInFolder(folder)
' 宣告變數
Dim file, subFolder

' 找出目前所在目錄內所有的檔案
For Each file In folder.Files
' 檢查檔案日期是否符合條件,若符合,就刪除
If ((file.DateLastModified <= modifiedDate)) Then
file.delete
End If
Next

' 如果遇到子目錄,也要進去檢查並刪除
For Each subFolder in folder.SubFolders
DelFilesInFolder subFolder
Next
End Sub

WScript.Echo("作業執行完畢:" & Date & " " & Time)
+=========================================================+

我查了其他相關的資料,加上上述原文討論區。
(資料來源據說在IThome,http://ithelp.ithome.com.tw/question/10009001)

發現上述的VB script CODE 是最簡潔的,而JerryIT的說明也算够清楚了。
有沒有發覺到,windows 的系統對視覺化操作的設計很人性化,
只要你開檔案總管,點選檔案,滑鼠右鍵,刪除(或是直接按Delete鍵)!
但是對IT管理的技術人員嘛……

我之所以喜歡 Linux ,真的是不沒憑沒據的!
我要引用
我要回應
Add to My Web 儲存至「書籤」
schumi
Site Admin
文章: 696
註冊時間: 2004-04-15 14:30:34

Re: 定時自動清除檔案!

文章 schumi »

find /find-path -type f -mtime +120 | xargs rm -f {} \;
回覆文章

回到「Linux」