Pengaturan

Gambar

Lainnya

Tentang KASKUS

Pusat Bantuan

Hubungi Kami

KASKUS Plus

© 2024 KASKUS, PT Darta Media Indonesia. All rights reserved

biglilAvatar border
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:
  1. klo ambil log di /home/logarchive/smb/log/ dia dalam archive.tgz nya dia bikin duplicate 1 level folder awal.
  2. 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.. emoticon-I Love Kaskus

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
GuestAvatar border
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Urutan
Terbaru
Terlama
GuestAvatar border
Guest
Tulis komentar menarik atau mention replykgpt untuk ngobrol seru
Komunitas Pilihan