본문 바로가기

CentOS/Scenario

Scenario>Backup Script

반응형

Scenario>

회사 업무에서 /home/* 백업 스크립트를 정기적으로 사용해야된다.

이에 스케쥴러에 등록을 한다.

 

1. 폴더 생성

[root@system1 ~]# mkdir -p /backup
[root@system1 ~]# mkdir -p /root/bin

- /backup : /home/* 백업을 저장

- /root/bin : 백업 sh 파일 저장

 

2. 백업 스크립트 작성

[root@system1 ~]# vi /root/bin/backup.sh

 

3. 1차 Test

#!/bin/bash
cd /home
tar cvzf /backup/home_`date +%m%d_%H%M%S`.tar.gz .

 

4. 실행 퍼미션 부여

[root@system1 ~]# chmod 755 /root/bin/backup.sh

-rwxr-xr-x. 1 root root 445  9월  7 17:56 backup.sh*

 

5. 실행 테스트

[root@system1 ~/bin]# /root/bin/backup.sh

./
./ferdora/
./ferdora/.mozilla/
./ferdora/.mozilla/extensions/
./ferdora/.mozilla/plugins/
./ferdora/.bash_logout
./ferdora/.bash_profile
./ferdora/.bashrc
./FEDORA/
./FEDORA/.mozilla/
./FEDORA/.mozilla/extensions/
./FEDORA/.mozilla/plugins/
./FEDORA/.bash_logout
./FEDORA/.bash_profile
./FEDORA/.bashrc
./FEDORA/.cache/
./FEDORA/.cache/abrt/
./FEDORA/.cache/abrt/lastnotification
./FEDORA/.config/
./FEDORA/.config/abrt/
./FEDORA/.bash_history
./user01/
./user01/.mozilla/
./user01/.mozilla/extensions/
./user01/.mozilla/plugins/
./user01/.bash_logout
./user01/.bash_profile
./user01/.bashrc
./user01/.cache/
./user01/.cache/abrt/
./user01/.cache/abrt/lastnotification
./user01/.config/
./user01/.config/abrt/
./user01/.bash_history
./user01/file.tar
./user01/dir1/
./user01/dir1/file2
./user01/dir1/file1
./user01/.viminfo
./user02/
./user02/.mozilla/
./user02/.mozilla/extensions/
./user02/.mozilla/plugins/
./user02/.bash_logout
./user02/.bash_profile
./user02/.bashrc
./user02/.cache/
./user02/.cache/abrt/
./user02/.cache/abrt/lastnotification
./user02/.config/
./user02/.config/abrt/
./user02/.bash_history

 

6. 백업 확인

[root@system1 ~/bin]# cd /backup
[root@system1 /backup]# ls -l

-rw-r--r--. 1 root root 3.0K  9월  8 11:36 home_0908_113625.tar.gz

 

7. 백업 내용을 출력하지 않게 스크립트 수정(로그파일생성)

#!/bin/bash
cd /home
tar cvzf /backup/home_`date +%m%d_%H%M%S`.tar.gz . >/dev/null 2>&1
if [ $? -eq 0 ] ; then
	echo "[ OK ] : Backup Success." >> /var/log/backup.log
else
	echo "[ FAIL ] : Backup Failed." >> /var/log/backup.log
fi

 

8. 로그파일 생성 확인

[root@system1 /backup]# /root/bin/backup.sh

 

9. 로그 파일 확인

[root@system1 /backup]# cat /var/log/backup.log

 [ OK ] : Backup Success. 

 

10. 로그 파일에 시간 첨부

#!/bin/bash
echo "---------- Backup Start: $(date) ----------" >> /var/log/backup.log
cd /home
tar cvzf /backup/home_`date +%m%d_%H%M%S`.tar.gz . >/dev/null 2>&1

if [ $? -eq 0 ] ; then
	echo "[ OK ] : Backup Success." >> /var/log/backup.log
else
	echo "[ FAIL ] : Backup Failed." >> /var/log/backup.log
fi
echo "---------- Backup End: $(date) ----------" >> /var/log/backup.log

 

11. 로그 파일 확인

[root@system1 /backup]# cat /var/log/backup.log

--------- Backup Start: 2019. 09. 08. (일) 11:47:44 KST ----------
 [ OK ] : Backup Success. 
--------- Backup End: 2019. 09. 08. (일) 11:47:44 KST -----------

 

12. 로그 파일 위치 변수 지정(추후 로그 파일 위치 변경 관리)

#!/bin/bash
		
LOG=/var/log/backup.log
		
echo "---------- Backup Start: $(date) ----------" >> $LOG
cd /home
tar cvzf /backup/home_`date +%m%d_%H%M%S`.tar.gz . >/dev/null 2>&1

if [ $? -eq 0 ] ; then
	echo "[ OK ] : Backup Success." >> $LOG
else
	echo "[ FAIL ] : Backup Failed." >> $LOG
fi
echo "---------- Backup End: $(date) ----------" >> $LOG
echo >> $LOG

 

13. 로그 파일 확인

[root@system1 /backup]# cat /var/log/backup.log

-------- Backup Start: 2019. 09. 08. (일) 11:51:07 KST -----------
 [ OK ] : Backup Success. 
--------- Backup End: 2019. 09. 08. (일) 11:51:07 KST -----------

14. 스케줄러에 지정

[root@system1 /backup]# crontab -e

 

15. 스크립트 작성

* * * * * /root/bin/backup.sh

 

16. 최종 확인

[root@system1 /backup]# ls -l /backup
[root@system1 /backup]# ls -l /var/log

 

반응형