SUSE LINUX Enterprise & openSUSE Community
มีนาคม 19, 2019, 04:36:56 AM *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
ข่าว:
 
   หน้าแรก   ช่วยเหลือ ค้นหา เข้าสู่ระบบ สมัครสมาชิก  

[Why we need your support] SUSE and openSUSE are trademarks of Attachmate Group, Inc. - WE ARE NOT IN ANY WAY ASSOCIATED WITH SUSE AND ATTACHMATE GROUP. SUSEThailand.com is a SUSE Linux user and community found in Thailand but not limited to other country suse linux user to join in. Currently active contents (How to's, Scripts, Tips, Tricks, Tutorials, Linux Command Line, and Troubleshooting) this suse linux how to's and expert support are SUSE Linux.
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน
หัวข้อ: Script rsync Differential incremental backup (สคริปต์สำรองข้อมูล พร้อมส่งเมลแจ้งเมื่อสำรองเสร็จ)  (อ่าน 1658 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Sontaya
Administrator
Expert : ผู้เชี่ยวชาญ
*****

Karma: +1/-0
ออฟไลน์ ออฟไลน์

กระทู้: 1931


Administrator


เว็บไซต์
« เมื่อ: มีนาคม 08, 2012, 12:09:00 PM »


Script rsync Differential incremental backup (สคริปต์สำรองข้อมูล พร้อมส่งเมลแจ้งเมื่อสำรองเสร็จ)

ตัวอย่างการสำรองข้อมูลด้วย rsync (backup files over a local network) ผ่านโปรโตคอล SSH โดยสามารถตั้ง crontab กำหนดระยะเวลาสำรองข้อมูลได้ตามต้องการ สคริปต์จะลบข้อมูลเก่าทุกวันที่ 15 ของเดือน สคริปต์สำรองข้อมูลแบบ differential incremental คือสำรองเฉพาะไฟล์ที่เพิ่มขึ้น/เปลี่ยนแปลง เท่านั้น

Define Valuable ต่างๆ

SOURCEPATH_HOME='/home/'
ระบุพาทต้นทางที่ต้องการสำรองข้อมูล

SOURCEPATH_DATA='data/'
ระบุพาทต้นทางที่ต้องการสำรองข้อมูล

DESTPATH_HOME='/data/rsync_branches/home/'
พาทเก็บข้อมูลที่สำรอง (storage)

DESTPATH_DATA='/data/rsync_branches/data/'
พาทเก็บข้อมูลที่สำรอง (storage)

LOGHOME="/data/rsync_branches/home.log"
LOGDATA="/data/rsync_branches/data.log"
พาท logfile

EXCLUDE='/data/scripts/rsync_exclude_branches'
พาทไฟล์ exclude ที่ไม่ต้องการสำรอง

BWLIMIT='10'
กำหนดแบนด์วิดธ์ (kpbs/s)

MAILFROM='logs@domain.com'
ADMINEMAIL='admin@domain.com'
ITSUPPORT='it.support@domain.com'
กำหนดเมล

CURDATE=$(date +%d)
วันที่ปัจจุบัน

สคริปต์
โค๊ด:

#!/bin/bash
#-------------------------------------------------------------------------------------#
#Rsync script (Ver. 0.0.1)                                                      
#By Sontaya Potibut   <susethailand.com@gmail.com>          
#-------------------------------------------------------------------------------------#

DESTHOST='192.168.182.10'
SOURCEPATH_HOME='/home/'
SOURCEPATH_DATA='data/'
DESTPATH_HOME='/data/rsync_branches/home/'
DESTPATH_DATA='/data/rsync_branches/data/'
LOGHOME="/data/rsync_branches/home.log"
LOGDATA="/data/rsync_branches/data.log"
EXCLUDE='/data/scripts/rsync_exclude_branches'
BWLIMIT='10'
MAILFROM='logs@domain.com'
ADMINEMAIL='admin@domain.com'
ITSUPPORT='it.support@domain.com'
CURDATE=$(date +%d)

echo "**********************************************"
echo "$(date):Starting Backup"
echo "**********************************************"
echo ' '

#ping the destination host to confirm its online
ping -c 1 "$DESTHOST" > /dev/null

if [ "$?" -eq 0 ] ; then
echo "Backup destination host at $DESTHOST is UP"
echo ' '

#Empty log files
echo $'\n\n' > $LOGHOME
echo $'\n\n' > $LOGDATA

#set option delete on 15th of month
        if [ "$CURDATE" -eq 15 ]; then
#let's copy
rsync --delete --exclude-from=$EXCLUDE --stats --log-file=$LOGHOME --bwlimit=$BWLIMIT -azr -e "ssh" $DESTHOST:$SOURCEPATH_HOME $DESTPATH_HOME
rsync --delete --exclude-from=$EXCLUDE --stats --log-file=$LOGDATA --bwlimit=$BWLIMIT -azr -e "ssh" $DESTHOST:$SOURCEPATH_DATA $DESTPATH_DATA
echo "`date`:branches backup has finished!" | mail -s "Rsync branches - Backup Finished" -r $MAILFROM $ITSUPPORT

#backup finished
echo "******************************************"
echo "$(date):The backup has finished"
echo "******************************************"
                else
rsync --exclude-from=$EXCLUDE --stats --log-file=$LOGHOME --bwlimit=$BWLIMIT -azr -e "ssh" $DESTHOST:$SOURCEPATH_HOME $DESTPATH_HOME
rsync --exclude-from=$EXCLUDE --stats --log-file=$LOGDATA --bwlimit=$BWLIMIT -azr -e "ssh" $DESTHOST:$SOURCEPATH_DATA $DESTPATH_DATA
echo "`date`:branches backup has finished!" > /tmp/branches.mail
mail -s "Rsync branches - Backup Finished" -a $LOGHOME -a $LOGDATA -r $MAILFROM $ITSUPPORT < /tmp/branches.mail
rm /tmp/branches.mail

#echo "`date`:branches backup has finished!" | mail -s "Rsync branches - Backup Finished" -r $MAILFROM $ITSUPPORT  
        fi
else
#mounting the backup share has failed
echo "`date`:Destination host server at $DESTHOST did not respond for Notes backup!"
echo "`date`:Scheduled Notes data backup failed! - the destination host $DESTHOST did not respond!" | mail -s "Rsync branches - Backup Failed!" -r $MAILFROM $ITSUPPORT

fi
#will return indicates success to shell.
exit 0;


ลองนำไปประยุกต์ใช้งานกันดูครับ
« แก้ไขครั้งสุดท้าย: มีนาคม 09, 2012, 03:05:25 PM โดย Sontaya » แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

ageLOC Technology
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

(@)2007 SUSE Linux user community found in Thailand. This site is not an official openSUSE and SUSE website, and is not in any way affiliated with or endorsed by SUSE Linux GmbH or Novell. openSUSE and SUSE are trademarks of Novell, Inc. in the United States and other countries.
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!
หน้านี้ถูกสร้างขึ้นภายในเวลา 0.044 วินาที กับ 19 คำสั่ง (Pretty URLs adds 0.01s, 2q)