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 🙂
Thanks tutorialnya bos ^^ work
sama2 kang.. ^_^
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
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
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
dah solved mas, ternyata karena encoding nya