SUSE LINUX Enterprise & openSUSE Community
ธันวาคม 17, 2017, 07:07:06 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]   ลงล่าง
  พิมพ์  
ผู้เขียน
หัวข้อ: Rsync incremental backups script สคริปต์สำรองข้อมูลเก็บเป็นวันๆ  (อ่าน 3867 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Sontaya
Administrator
Expert : ผู้เชี่ยวชาญ
*****

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

กระทู้: 1931


Administrator


เว็บไซต์
« เมื่อ: มีนาคม 25, 2014, 05:03:05 PM »


อ้างถึง
ตัวอย่าง สคริปต์สำรองข้อมูลจากสาขา (Branches) มาเก็บไว้ยังสำนักงานใหญ่หรือศูนย์กลายข้อมูล (Datacenter) โดยแยกเก็บเป็นวันๆ ครับ

เปลี่ยนพาทต้นทาง และปลายทางสำหรับสำรองข้อมูล, ไอพีแอดเดรส ก็สามารถนำสคริปต์ไปใช้งานได้แล้วครับ

โค๊ด:
#!/bin/bash
#-------------------------------------------------------------------#
# Rsync incremental backups script (V1.0.1)                                 #
# By: Sontaya P (www.suse.in.th)
# Updated: 2014-03-25                 #
#-------------------------------------------------------------------#
#mail setting
MAILFROM="[email protected]"
MAILADMIN="[email protected]"
#log files
LOGHOME="/backup/rsync_branches/rsync_home.log"
LOGDATA="/backup/rsync_branches/rsync_data.log"
echo $'\n\n' > $LOGHOME
echo $'\n\n' > $LOGDATA
#todays date
TOD=$(date +%Y-%m-%d)
#yesterdays
YEST=$(date +%Y-%m-%d -d "1 days ago")
LASTDAY=`ls -al | tail --lines=1 | awk '{print $9}'`
#delete
DAYS365=$(date +%Y-%m-%d -d "365 days ago")
#directoris to backup
SRCDIR="/data/"
SRCDIR2="/home/"
#where to storage the backups
BACKUPDIR="/backup/rsync_branches/data/$TOD"
BACKUPDIR2="/backup/rsync_branches/home/$TOD"
#hostname or ip address of rsync remote
REMOTE="IP ADDRESS"
USER="USERNAME"
#link destination directory:
LINK="/backup/rsync_branches/data/$TOD"
LINK2="/backup/rsync_branches/home/$TOD"
#limit bandwidth rsync uses in its network communications
BWLIMIT='' #KByte/s
#rsync options
OPT="--quiet --archive --one-file-system --hard-links --human-readable --inplace --numeric-ids --delete --delete-excluded --exclude-from=/backup/scripts/rsync_exclude --itemize-changes --recursive --times --bwlimit=$BWLIMIT --log-file=$LOGDATA --link-dest=$LINK"
OPT2="--quiet --archive --one-file-system --hard-links --human-readable --inplace --numeric-ids --delete --delete-excluded --exclude-from=/backup/scripts/rsync_exclude --itemize-changes --recursive --times --bwlimit=$BWLIMIT --log-file=$LOGHOME --link-dest=$LINK2"

        #delete the backup from 365 days ago, if it exists
        if [ -d /backup/rsync_branches/data/$DAYS365 ]; then
#echo "1";
                rm /backup/rsync_branches/data/$DAYS365 -R
                rm /backup/rsync_branches/home/$DAYS365 -R
                #sync data
rsync $OPT [email protected]$REMOTE:$SRCDIR $BACKUPDIR
                #sync home
rsync $OPT2 [email protected]$REMOTE:$SRCDIR2 $BACKUPDIR2
                #notify to system administrator
                mail -s "Rsync [Local] Brnaches terminal - Deleted the old one data ${DAYS365} and Incremental backup finished" -a $LOGHOME -a $LOGDATA -r $MAILFROM $MAILADMIN
        else
#check last backup data
if [ "$LASTDAY" == "$YEST" ]; then
#echo "test"
                #sync data
        rsync $OPT [email protected]$REMOTE:$SRCDIR $BACKUPDIR
        #sync home
                rsync $OPT2 [email protected]$REMOTE:$SRCDIR2 $BACKUPDIR2
#notify to system administrator
                mail -s "Rsync [Local] Brnaches terminal - Incremental backup finished" -a $LOGHOME -a $LOGDATA -r $MAILFROM $MAILADMIN
else
#echo "test2"
                #create a link directory use hard link
                #sync data
                cp -al /backup/rsync_branches/data/$LASTDAY /backup/rsync_branches/data/$YEST
        rsync $OPT [email protected]$REMOTE:$SRCDIR $BACKUPDIR
                #sync home
                cp -al /backup/rsync_branches/home/$LASTDAY /backup/rsync_branches/home/$YEST
                rsync $OPT2 [email protected]$REMOTE:$SRCDIR2 $BACKUPDIR2
       
                #notify to system administrator
                mail -s "Rsync [Local] Branches terminal - Incremental backup finished" -a $LOGHOME -a $LOGDATA -r $MAILFROM $MAILADMIN 

fi
         fi
exit 0;
#End of script

ลองนำไปประยุกต์ใช้งานกันดูนะครับ :-
« แก้ไขครั้งสุดท้าย: มีนาคม 25, 2014, 05:05:05 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.025 วินาที กับ 22 คำสั่ง (Pretty URLs adds 0.007s, 2q)