Tampilkan postingan dengan label date. Tampilkan semua postingan
Tampilkan postingan dengan label date. Tampilkan semua postingan

Menghapus File lebih dari x hari di Linux


Hiyaa, ketemu lagi di blog Tutorial Linux Ubuntu Berbahasa Indonesia. Metode ini biasanya digunakan untuk daily backup pada sebuah storage yang dikhususkan untuk backup. Retensi backup yang diberikan bisa diatur sesuai keinginan kita. Mengapa harus seperti ini? Jawabannya adalah untuk menghemat space di storage kita. Bayangkan saja kalau setiap hari membackup pasti lama-lama storage kita akan penuh, maka dari itu file-file backup yang lama bisa di burning ke DVD/CD, atau kita menghapusnya seperti topik yang akan saya bahas.

Metode ini menggunakan Shell Script yang akan di eksekusi dengan crontab setiap jangka waktu tertentu, sudah pasti ini akan menjadi patokan retensi backup kita kan. :) sebenarnya tidak terlalu sulit untuk melakukannya, jadi jangan khawatir. Ikuti saja langkah-langkah cara menghapus file lebih dari x hari ini, anda juga bisa dengan bebas menjiplak shell script yang akan saya buat :)

Skenario :
Kita melakukan daily backup pada folder /home/apocalypsix/backup/. Didalam folder tersebut pasti akan tersimpan file backup dengan timestamp yang berbeda-beda. Setiap 7 hari jam 12:01 malam crontab akan mengeksekusi shell script dibawah ini.

Sample script :
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin

SEVENDAY=`date "+%d.%m.%Y" --date="-7 days"`

rm /home/apocalypsix/backup/backup_$SEVENDAY.tar.gz

  • Pada baris pertama dan kedua kita menentukan eksekutor shell script.
  • Pada baris ketiga kita sedang membuat aturan retensi hari, untuk bagian "--date="-7 days" anda bisa mengubah angkanya menjadi hari yang anda inginkan.
  • Pada baris keempat kita akan menghapus semua file yang bernama backup_ dengan memasukkan variabel retensi serta ekstensi file.
Untuk mengatur shell script ini berjalan setiap 7 hari, kita menggunakan crontab. Asumsi bahwa shell script tersimpan di /home/apocalypsix/shell/delete7day.sh. Jangan lupa untuk menambahkan permission x pada shell script anda, chmod 700 /home/apocalypsix/shell/delete7day.sh.
1 0 * * 0 /home/apocalypsix/shell/delete7day.sh
Dari crontab diatas, shell script kita akan di eksekusi pada hari ke 0 (hari minggu), pada jam 12:01 malam.

[ TAMBAHAN ]


Parameter tambahan untuk settingan retensi ada banyak. Parameter yang saya tau adalah bahwa pada bagian --date="x days", pada bagian "x" mempunyai parameter tersendiri, seperti jika kita membuat file untuk 5 hari kedepan maka value dari "x" maka tidak boleh memakai tanda minus (-). Tanda minus hanya digunakan jika anda ingin melakukan sesuatu pada beberapa hari kebelakang. Lain hal nya jika anda ingin melakukan penghapusan tadi pada setiap file sehari sebelum tanggal sekarang. Value dari "x" tadi harus menjadi "yesterday".

Sample script :
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin


YESTERDAY=`date "+%d.%m.%Y" --date="yesterday"`

rm /home/apocalypsix/backup/backup_$YESTERDAY.tar.gz
Dalam shell script diatas retensi penghapusan menjadi 1 hari. Tentunya ini harus disesuaikan pula dengan settingan crontab anda karena settingan crontab tersebut saling terkait dengan shell script anda. Crontab anda harusnya menjadi seperti ini :
1 0 * * * /home/apocalypsix/shell/delete1day.sh

Sekian dulu postingan kali ini, jika ada pertanyaan anda bisa tanyakan melalui komentar.
Semoga bermanfaat dan,
Salam Penguin :)

Format Penanggalan di Shell Script Linux Ubuntu (Timestamp Linux / Unix)

Hiyaa...ketemu lagi di blog Tutorial Linux Ubuntu Berbahasa Indonesia. Kali ini mari kita berbicara tentang Timestamp pada linux atau unix! Biasanya kita akan menyertakan timestamp ini pada sebuah file yang dihasilkan dari kegiatan rutin yang dilakukan dalam server kita. Didalam Linux maupun Unix penanggalan biasanya digunakan jika kita membuat file secara otomatis seperti misalnya backup harian, hal ini tentu akan memudahkan kita dalam management file backup. Tanpa hal ini kita akan dibuat pusing oleh pekerjaan kita sendiri, ketika mau mencari file ditanggal tertentu tapi tidak ada patokan jelas yang dapat mempermudah pencarian kita. Maka dari itu penanggalan ini diperlukan. Format penanggalan di linux :


Syntax standard dari penanggalan adalah :
date +"%d-%m-%y"
Output :
14-07-13
Untuk membuat tahun menjadi 4 digit :
date +"%d-%m-%Y"
Output : 
14-07-2013
Untuk menampilkan jam saja :
date +"%T"
Output :
04:42:42
Untuk menampilkan format waktu 12 jam :
date +"%r"
Output :
04:44:21 AM
Untuk menampilkan waktu dalam format HH:MM :
date +"%H:%M"
Output :
04:47
Sekarang bagaimana caranya menampilkan tanggal/waktu didalam variabel shell script?

Cukup tambahkan baris dibawah ini kedalam shell script anda
NOW=$(date +"%m-%d-%Y")

Contoh shell script backup dengan penanggalan
#!/bin/sh

NOW=`date "+%d.%m.%Y.%H"`

tar -cf /path/storage/backup/anda/fileanda.${NOW}.tar /path/file/yang/akan/anda/backup
gzip /pat/storage/backup/anda/fileanda.${NOW}.tar
 
Contoh shell script diatas akan menghasilkan file backup dengan format seperti ini :
fileanda.14.07.2013.15.tar.gz
Akan saya tuliskan atribut penanggalan (date) secara lengkap

%FORMAT StringDescription
%%a literal %
%alocale's abbreviated weekday name (e.g., Sun)
%Alocale's full weekday name (e.g., Sunday)
%blocale's abbreviated month name (e.g., Jan)
%Blocale's full month name (e.g., January)
%clocale's date and time (e.g., Thu Mar 3 23:05:25 2005)
%Ccentury; like %Y, except omit last two digits (e.g., 21)
%dday of month (e.g, 01)
%Ddate; same as %m/%d/%y
%eday of month, space padded; same as %_d
%Ffull date; same as %Y-%m-%d
%glast two digits of year of ISO week number (see %G)
%Gyear of ISO week number (see %V); normally useful only with %V
%hsame as %b
%Hhour (00..23)
%Ihour (01..12)
%jday of year (001..366)
%khour ( 0..23)
%lhour ( 1..12)
%mmonth (01..12)
%Mminute (00..59)
%na newline
%Nnanoseconds (000000000..999999999)
%plocale's equivalent of either AM or PM; blank if not known
%Plike %p, but lower case
%rlocale's 12-hour clock time (e.g., 11:11:04 PM)
%R24-hour hour and minute; same as %H:%M
%sseconds since 1970-01-01 00:00:00 UTC
%Ssecond (00..60)
%ta tab
%Ttime; same as %H:%M:%S
%uday of week (1..7); 1 is Monday
%Uweek number of year, with Sunday as first day of week (00..53)
%VISO week number, with Monday as first day of week (01..53)
%wday of week (0..6); 0 is Sunday
%Wweek number of year, with Monday as first day of week (00..53)
%xlocale's date representation (e.g., 12/31/99)
%Xlocale's time representation (e.g., 23:13:48)
%ylast two digits of year (00..99)
%Yyear
%z+hhmm numeric timezone (e.g., -0400)
%:z+hh:mm numeric timezone (e.g., -04:00)
%::z+hh:mm:ss numeric time zone (e.g., -04:00:00)
%:::znumeric time zone with : to necessary precision (e.g., -04, +05:30)
%Zalphabetic time zone abbreviation (e.g., EDT)

Saya cukupkan dulu Tutorial kali ini. Selanjutnya Insya Allah saya akan membagikan trips trik yang berkaitan dengan timestamp yang mungkin akan berguna untuk anda.

Semoga bermanfaat,
Salam penguin! :)