tanggal linux sebagai nama file

Linux Date as Filename

TAG: bash script tanggal linux sebagai nama date as filename file name backup

English explanation at the bottom.

Biar ga lupa terus, bash script ini saya tulis untuk catatan pribadi karena sering lupa. Kasusnya adalah saya ingin menjalankan script backup database mysql secara otomatis per hari (menggunakan cron), hasilnya disimpan di direktori tertentu, dengan nama file yang mengandung tanggal backup-nya.

Isi script-nya sebagai berikut :

#!/bin/bash
dir="/data/backup/DB/"
db_name="masterstock"
date=`date +"%Y%m%d"`
prefix="db-"
fullname=$dir$prefix$db_name"_"$date".sql"
mysqldump -u userdb -p'passdb' $db_name |gzip -c > $fullname".gz"

akan menghasilkan output file :
/data/backup/DB/db-masterstock_20081219.sql.gz

Mari kita breakdown per baris
#1 = interpreter script (minta dijalankan oleh perintah bash)
#2 = direktori tempat hasil backup disimpan (output dir)
#3 = nama database yang akan di backup (database name)
#4 = mengambil “tanggal” sebagai string dimasukan ke variabel $date
#5 = prefix nama file output
#6 = template full filename
#7 = perintah mysqldump dengan parameter yang diinginkan

Pastikan untuk mengganti userdb dan passwd-nya dengan data yang valid.

Simpan script-nya, chmod 700 atau 750, jangan lupa buat direktori “dir“-nya, coba eksekusi, dan lihat hasilnya 🙂

Contoh hasilnya seperti berikut :

[root@gw-nas scripts]# ls -al /data/backup/DB/
total 16
drwxr-xr-x  2 root      root 4096 Oct 24 11:24 .
drwxr-xr-x 16 itsupport it   4096 Oct 24 11:24 ..
-rw-r--r--  1 root      root 1208 Oct 24 11:27 db-masterstock_20081219.sql.gz

Jika ingin menambahkan jam dan menit, tinggal merubah date menjadi :

date=`date +"%Y-%m-%d_%k%M"`

Perubahan tersebut akan membuat output filename menjadi :
db-masterstock_2008-12-19_2056.sql.gz (tahun 2011, bulan 10, tanggal 23, jam 20, menit 56).


seperti biasa saya tulis ini berdasarkan kasus dadakan dan ditulis kesini biar ga lupa

klo ada yg mampir dan kopi-paste silahkan saja, tapi akan saya hargai jika mencantumkan sumbernya 🙂

7 thoughts on “tanggal linux sebagai nama file

  1. Maaf bos saya menemukan kesulitan ternyata saya cron di kloxo tidak jalan…..untuk command yang ditulis bagaimana ya??

    saat ini saya tulis seperti ini
    /home/sohee/autobackup/autobackup.sh

    mohon bantuannya terima kasih

    • kebetulan saya jarang pake kloxo, cuma pernah simulasi online aja, jadi kurang kompeten untuk memberikan saran, yang jelas, kalau mas Akbar bisa login ke shell-nya akan jauh lebih mudah 🙂

      untuk tahap awal coba pastikan script-nya di chmod menjadi 755, kalau masih tidak bisa coba jadi 775, klo masih ga bisa juga coba 777 tapi tidak direkomendasikan

      kalau mas akbar tidak mau meng-chmod.. maka sintaks sebelum path ke scriptnya tambahkan interpreter shell yang akan mengeksekusi script tersebut (biasanya /bin/bash atau /bin/sh), contoh :
      /bin/sh /home/sohee/autobackup/autobackup.sh
      atau
      /bin/bash /home/sohee/autobackup/autobackup.sh

      Edit CRON via terminal
      ———————–
      tambahan lain, kalau ngedit crontab lewat shell / terminal, lebih baik memperjelas siapa user yang harus mengeksekusi script tersebut

      contoh:
      */1 * * * * root /home/sohee/autobackup/autobackup.sh
      artinya setiap 1 menit, user root akan mengeksekusi autobackupt.sh yang ada di /home/sohee/autobackup/

      alternatif (menambahkan user PLUS interpreter shell ‘sh’ atau ‘bash’) :
      */1 * * * * root /bin/sh /home/sohee/autobackup/autobackup.sh
      atau
      */1 * * * * root /bin/bash /home/sohee/autobackup/autobackup.sh

      pastikan path interpreter shell berada pada path yg benar
      bash dan sh biasanya ada di /bin atau /usr/bin

  2. mas, mau tanya, di file name nya kok ada enternya ya ?

    abis tak modif dikit gini mas

    dir=”/home/test/”
    db_name=”terr”
    date=`date +”%Y%m%d-%H%M%S”`
    prefix=”db-”
    fullname=$dir$prefix$db_name”-“$date”.sql”
    mysqldump -u saaas -p’544444′ $db_name > $fullname

  3. sory ralat, ini editannya

    dir=”/home/sysadmin/”
    db_name=”testapp1″
    date=`date +”%Y%m%d-%H%M%S”`
    prefix=”db-”
    fullname=$dir$prefix$db_name”-“$date”.sql”
    mysqldump -u backupdb -p’rcjoZb9pmS5njx2Ny9FV’ $db_name > $fullname

Leave a comment