/ / / Αυτοματοποίηση της διαδικασίας διαγραφής παλιών αρχείων καταγραφής

Αυτοματοποίηση της διαδικασίας διαγραφής παλιών αρχείων καταγραφής

Πολλές υπηρεσίες και προγράμματα εκεί έξω παράγουν logτα αρχεία ως διαδρομή ελέγχου για όλα όσα κάνουν, ωστόσο λίγοι έχουν μια λειτουργία που αφαιρεί αυτά τα αρχεία καθώς ξεπερνούν τη χρησιμότητά τους. Ως αποτέλεσμα, αυτά τα αρχεία καταγραφής καθίστανται στο σύστημά σας τρώγοντας χώρο (μερικές φορές περισσότερο από ό, τι γνωρίζετε) και γεμίζοντας τους καταλόγους για εκείνους τους χρόνους που χρειάζεστε για να τους αποκτήσετε πρόσβαση.

Έτσι εάν δεν χρειάζεστε αυτά τα αρχεία, γιατί να τα κρατήσετε; Θα σας δείξουμε πώς μπορείτε εύκολα να καταργήσετε αυτά τα παλιά αρχεία καταγραφής για να σας κρατήσουμε ωραίο και τακτοποιημένο.

Φυσικά, ενώ καλύπτουμε τα παρακάτω είναι άμεσα χρήσιμα για τη διαχείριση των αρχείων καταγραφής, μπορείτε επίσης να εφαρμόσετε τις ίδιες τεχνικές σε οποιοδήποτε άλλο τύπο αρχείου "λήξης" (όπως αντίγραφα ασφαλείας).

Κατάργηση αρχείων με βάση την τελευταία τροποποιημένη ημερομηνία

Εάν θέλετε να εκκαθαρίσετε τα υπάρχοντα αρχεία καταγραφής σας με βάση μόνο την τελευταία τροποποιημένη ημερομηνία του αρχείου, το μόνο που έχετε να κάνετε είναι να χρησιμοποιήσετε την εντολή FORFILES. Για παράδειγμα:

FORFILES / P "C: LogFiles" / S / D -7 / C "CMD / C DEL / F / Q @ PATH"

Η παραπάνω εντολή θα διαγράψει όλα τα αρχεία από το φάκελο "C: LogFiles" και όλους τους υποφάκελους που δεν έχουν τροποποιηθεί την προηγούμενη εβδομάδα.

Η εντολή FORFILES είναι αρκετά ευέλικτη με την εντολήτα πρότυπα αναζήτησης και τις λειτουργίες ημερομηνίας. Για παράδειγμα, στη θέση ενός αριθμού, μπορείτε να εισαγάγετε μια ημερομηνία όπως '-1/13/2010' για να διαγράψετε τα αρχεία που τροποποιήθηκαν τελευταία πριν από την καθορισμένη ημερομηνία.

Για να λάβετε όλες τις λεπτομέρειες σχετικά με το τι μπορεί να κάνει το FORFILES, προβάλετε την ηλεκτρονική βοήθεια χρησιμοποιώντας την ακόλουθη εντολή από τη γραμμή εντολών:

FORFILES /?

Κατάργηση αρχείων με βάση ένα μοτίβο ημερομηνίας στο όνομα αρχείου

Πολλές εφαρμογές και υπηρεσίες παράγουν αρχεία καταγραφήςμε βάση ένα πρότυπο ημερομηνίας ώστε να έχει ένα αρχείο καταγραφής ανά ημέρα (δηλ. Log100113.txt, Backup-2010-01-13.zip, κλπ.). Για αυτούς τους τύπους αρχείων, είναι προτιμότερο να διαγραφούν με βάση την ημερομηνία του αρχείου που ενσωματώνεται στο όνομα αρχείου αντί για την τελευταία τροποποιημένη ημερομηνία. Αυτό είναι χρήσιμο για σενάρια όπως η διατήρηση όλων των αρχείων καταγραφής για τους τελευταίους 3 μήνες. Δυστυχώς, τα Windows δεν έχουν μια εγγενή εντολή με αυτόν τον τύπο λογικής, αλλά με ένα σενάριο παρτίδας μπορούμε εύκολα να χειριστούμε αυτό το έργο.

Υπάρχουν παραδείγματα που περιλαμβάνονται στα σχόλια χρήσης σχετικά με το σενάριο, οπότε θα πρέπει να είναι αρκετά εύκολο να το καταλάβεις.

Το σενάριο

@ECHO OFF
ECHO Delete By Date Pattern
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.
REM Delete/Select files based on a date which utilizes MM and/or DD for file naming patterns.
REM
REM Usage:
REM DeleteByDatePattern {/M | /D} NumberToKeep Path PatternPrefix PatternPostfix [/L | /DEL]
REM    /M     Specifies the pattern being used is based on months.
REM    /D     Specifies the pattern being used is based on days.
REM    NumberToKeep
REM           The number of months (/M) or days (/D) to keep, including the current.
REM           For example, entering 1 keeps only the current month/day and 6 would keep the current minus 5.
REM    Path   The root location to search. Subdirectories will be searched.
REM    PatternPrefix
REM           The file search pattern placed before of the month/day when building the search string.
REM    PatternPostfix
REM           The file search pattern placed after of the month/day when building the search string.
REM    /L     (optional) Lists all files matching the pattern, but does not delete them.
REM    /DEL   (optional) Deletes all files matching the pattern.
REM
REM Examples:
REM    DeleteByDatePattern /M 3 "%WinDir%system32LogFiles" ex?? ??.log /DEL
REM       Deletes all IIS log files (Windows Server 2003) except for the current and previous two months.
REM    DeleteByDatePattern /D 7 "D:Backup" *-????-??- .zip /DEL
REM       Deletes all zip files from the D:Backup folder except for the current week.
REM       The file name pattern assumed above is "*-YYYY-MM-DD.zip"
REM    DeleteByDatePattern /M 0 "C:" *( )* /L
REM       Prints a list of all files on the C drive matching the pattern: "*-MM-*" (where MM is replaced with 01-12)
REM    DeleteByDatePattern /D 14 "C:Logs" Log-???? .txt
REM       Prints a list of all patterns which would be processed by the script.
SETLOCAL EnableExtensions EnableDelayedExpansion
REM Assumes your Windows Date/Time settings are set to 'DayOfWeek M/D/YYYY' format.
REM If your format is different, you will need to alter the variables below so they align.
FOR /F "tokens=1,2,3,4 delims=/ " %%A IN ('DATE /T') DO (
SET Month=%%B
SET Day=%%C
SET Year=%%D
)
IF /I {%1}=={/M} (
SET Keep=%Month%
SET Max=12
)
IF /I {%1}=={/D} (
SET Keep=%Day%
SET Max=31
REM Working off of the previous month's max days.
SET /A PrevMonth=%Month%-1
IF !PrevMonth! EQU 2 (
SET Max=28
REM Leap years... add more as needed.
IF /I %Year% EQU 2012 SET Max=29
IF /I %Year% EQU 2016 SET Max=29
)
IF /I !PrevMonth! EQU 4 SET Max=30
IF /I !PrevMonth! EQU 6 SET Max=30
IF /I !PrevMonth! EQU 9 SET Max=30
IF /I !PrevMonth! EQU 11 SET Max=30
)
SET Current=%Keep%
SET /A Keep=%Keep%-%2+1
REM Determine the range to be removed.
SET /A RemoveHighStart=%Current%+1
IF /I %Keep% LSS 1 (
SET RemoveLow=0
SET /A RemoveHighEnd=%Keep%+%Max%-1
) ELSE (
SET /A RemoveLow=%Keep%-1
SET RemoveHighEnd=%Max%
)
REM Process all less than the low range.
FOR /L %%Z IN (1,1,%RemoveLow%) DO CALL :Process %%Z %3 %4 %5 %6
REM Process all greater than the high range.
FOR /L %%Z IN (%RemoveHighStart%,1,%RemoveHighEnd%) DO CALL :Process %%Z %3 %4 %5 %6
ENDLOCAL
GOTO End
:Process
SET Key=0%1
SET Key=%Key:~-2%
SET Target="%~2%~3%Key%%~4"
ECHO Target Pattern: %Target%
IF /I {%5}=={/L} DIR %Target% /B /S
IF /I {%5}=={/DEL} DEL /F /S /Q %Target%
GOTO End
:End

Αυτοματοποίηση της διαδικασίας

Η εντολή FORFILES είναι εγγενής στα Windows,Ωστόσο, το script του DeleteByDatePattern θα πρέπει να τοποθετηθεί σε ένα φάκελο που ορίζεται στη μεταβλητή Path σας (όπως το φάκελο των Windows) ώστε να μπορεί να καλείται σαν να ήταν μια μητρική εντολή. Μόλις γίνει αυτό, μπορείτε να δημιουργήσετε μια προγραμματισμένη εργασία η οποία θα είναι είτε μία μόνο εντολή (εάν χρειάζεται μόνο να διαγράψετε από μία θέση) είτε ένα αρχείο δέσμης (εάν χρειάζεται να διαγράψετε από πολλές τοποθεσίες) το οποίο εκτελείται καθημερινά, εβδομαδιαία, μηνιαία ή οπουδήποτε.

Ένα ακόμα πράγμα που μπορείτε να ορίσετε και να ξεχάσετε.

Συνδέσεις

Λήψη Διαγραφή με βάση το πρότυπο μοτίβου από το Sysadmin Geek