- Beranda
- Komunitas
- Tech
- Programmer Forum
Bash Script untuk cari file log, lalu archive dan delete.
TS
biglil
Bash Script untuk cari file log, lalu archive dan delete.
Gan, ane mau tanya nih, ane kan buat ini script.
Masalah dalam script ini sbb:
Bagi agan sesepuh programming lounge yg jago bash, tolong bantuin ane benerin script ini dong..
Masalah dalam script ini sbb:
- klo ambil log di /home/logarchive/smb/log/ dia dalam archive.tgz nya dia bikin duplicate 1 level folder awal.
- folder ikut terarsip dalam .tgz, jadi klo di extract akan muncul folder-subfolder sbb: home -> logarchive -> smb -> log -> file.log
Bagi agan sesepuh programming lounge yg jago bash, tolong bantuin ane benerin script ini dong..
Code:
#!/bin/bash
# This script takes in 5 arguments:
# 1. Source folder where files are located;
# 2. File mask (e.g. file_11*);
# 3. Operation to perform, C = compress, D = delete
# 4. Days Old;
# 5. Folder where archive file is to be created.
#
# This script can be called from cron or launchd.
#
# Usage:
# LogArchive source_location file_mask operation days_old archive_location
#
# Sample usage to create an archive (without deletion):
# LogArchive /home/logarchive/smb/log/ file_12* C 14 /home/logarchive/smb/log-ARCHIVED/
#
# Sample usage to delete files:
# LogArchive /home/logarchive/smb/log/ file_12* D 14
#
# VARIABLES (line 25)
Code:
typeset -i DaysOld
typeset -i MinutesOld
SourceFolder=""
FileMask=""
Operation=""
DaysOld="1"
ArchiveFolder=""
ArchiveFile=`date '+%y:%m:%d:%H:%M:%S' | awk -F":" '{printf"20%2d%2d%2d_%2d%2d%2d.tgz",$1,$2,$3,$4,$5,$6}' | sed 's/ /0/g'`
# FUNCTIONS (line 36)
assignValues ()
{
SourceFolder=`echo $1 | sed 's/[\/]$//'`
FileMask="$2"
Operation="$3"
DaysOld="$4"
ArchiveFolder=`echo $5 | sed 's/[\/]$//'`
}
printValues ()
{
echo
echo Folder name is: $SourceFolder
echo File mask is: $FileMask
echo Operation is: $Operation
echo Days old is: $DaysOld
echo Minutes old is: $MinutesOld
echo Archive folder is: $ArchiveFolder
echo Archive file name is: $ArchiveFile
echo
}
# (line 58)
filesExist ()
{
cd $SourceFolder
#if [[ "$FileMask" = *\** ]]; then
#echo 1>&2 "$FileMask wildcard selection failed to find any files."
#exit 1
#fi
}
compressFiles ()
{
cd $SourceFolder
# find $FileMask ! -mmin $MinutesOld -exec tar -czv --file=$ArchiveFolder/$ArchiveFile {} \;
# searchResult=($(find $SourceFolder ! -mmin $MinutesOld))
searchResult=($(find $FileMask $SourceFolder ! -mmin $MinutesOld))
tar -czv --file=$ArchiveFolder/$ArchiveFile "${searchResult[@]}"
}
deleteFiles ()
{
# NOTE that the -P option is used for rm, thus providing
# a semi-secure file deletion.
cd $SourceFolder
find $FileMask ! -mmin $MinutesOld -exec rm -fPR {} \;
}
# (line 83)
# BEGIN MAIN SCRIPT
# clear
assignValues $1 $2 $3 $4 $5
MinutesOld=`expr $DaysOld*24*60`
printValues $SourceFolder $FileMask $Operation $DaysOld $MinutesOld $ArchiveFolder $ArchiveFile
filesExist $SourceFolder $FileMask
#
case "$Operation" in
'C' | 'c' )
compressFiles $SourceFolder $FileMask $MinutesOld $ArchiveFolder $ArchiveFile
;;
#
'D' | 'd' )
compressFiles $SourceFolder $FileMask $MinutesOld $ArchiveFolder $ArchiveFile
deleteFiles $SourceFolder $FileMask $MinutesOld
;;
#
*)
echo "No compression or deletion performed; invalid or missing argument on command line."
echo
;;
esac
exit 0
Diubah oleh nenen kambing 08-12-2015 04:00
0
861
3
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Urutan
Terbaru
Terlama
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Komunitas Pilihan