- Beranda
- Programmer Forum
Bash Script untuk cari file log, lalu archive dan delete.
...
![biglil](https://s.kaskus.id/user/avatar/2004/07/03/avatar44041_3.gif)
![Avatar border](https://s.kaskus.id/images/avatarborder/1.gif)
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..![I Love Kaskus emoticon-I Love Kaskus](https://s.kaskus.id/images/smilies/smilies_fb5ox6pmu1yk.gif)
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..
![I Love Kaskus emoticon-I Love Kaskus](https://s.kaskus.id/images/smilies/smilies_fb5ox6pmu1yk.gif)
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](https://s.kaskus.id/user/avatar/default.png)
![Avatar border](https://s.kaskus.id/images/avatarborder/1.gif)
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
![Programmer Forum](https://s.kaskus.id/r200x200/ficon/image-176.png)
Programmer Forum![KASKUS Official KASKUS Official](https://s.kaskus.id/kaskus-next/next-assets/images/icon-official-badge.svg)
20.2KThread•4.4KAnggota
Urutkan
Terlama
![Guest](https://s.kaskus.id/user/avatar/default.png)
![Avatar border](https://s.kaskus.id/images/avatarborder/1.gif)
Komentar yang asik ya