일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- AWS
- ubuntu
- it
- Spring Boot
- php
- javascript
- Web Server
- tool
- Spring
- JVM
- Git
- springboot
- Spring Batch
- Design Patterns
- 맛집
- linux
- IntelliJ
- Oracle
- jenkins
- devops
- laravel
- redis
- ReactJS
- Gradle
- db
- jsp
- 요리
- elasticsearch
- MySQL
- java
- Today
- Total
아무거나
[ubuntu] tar 명령어로 백업 본문
tar 명령어로 백업
시스템 백업은 파일 백업과 이미지 백업으로 나눠진다. 이미지 백업은 파티션 또는 윈도우를 통째로 가상 이미지로 만드는 것이고, 파일 백업은 파일로 백업하는 것이다.
시행했을경우 이미지나 파일이나 똑같다고 느껴진다 왜냐하면 파일도 시스템을 통째로 백업하기 때문이다. 그러나 이 부분에대해선 좀 더 알아봐야 될 것 같다. (이미지 백업 vs 파일 백업)
우선, 파일백업에 대한것을 알아보자. ( tar 백업 )
# 백업
1. su - // root계정으로 변경하여 시스템 파일도 건드릴 수 있게 한다.
2. tar cvpzf {저장될경로와이름.tgz} --exclude=/proc --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/dev --exclude=/sys --exclude={저장될경로와이름.tgz} /
ex) tar cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/dev --exclude=/sys --exclude=/backup.tgz /
// 제외할 폴더는 --exclude 옵션을 사용
// c:새로운 파일 생성, v: 진행목록을 표시, p:파일 권한 정보를 기억, z:gzip으로 압축, f:파일이름 설정
// 맨뒤에 /는, /에서부터 백업 (=최상단)
# 복구
1. su - // root계정 로그인
2. cd / // 최상위 폴더에서 압축을 풀어야됨
3. tar xvpzf {백업파일경로}
ex) tar xvpzf /backup.tgz
// x: tar로 압축한 파일을 압축 해제
# 압축 백업 : (tar -czpf 백업) 일반적으로 많이 쓰이는 백업입니다. 이 작업에는 CPU 가 많이 사용됩니다.
(10GB 미만 압축이면 상관없는데 그 이상의 대용량의 압축 백업은 주의가 필요합니다. 백업 시켜놓고 CPU 사용량을 확인하세요.)
# 복사 백업 : (cp -R 백업) 압축하지 않고 복사만 합니다. 사용 용량을 많이 차지하지만 (압축하지 않는다는 뜻) 백업할 때 CPU 사용량이 크게 증가하지는 않습니다.
# 증분 백업 : (rsync 백업) 변동사항만 비교하여 백업합니다. 비교를 위해서 파일은 항상 압축되지 않은 상태로 보관됩니다.
- 백업 주기 : 하루 1회 4:00 AM
- 백업 방법 : 압축백업
- 백업 유지기간 : 10일
- 백업 내용 : 전체백업
- 백업 저장소 : 동일 디스크의 /backup 폴더
- 주의 사항 : 시스템이 커질수록 백업시 CPU 사용량 체크 필요(만약 스케일업을 생각한다면 그 전에 먼저 다른 백업정책을 고려)
1. root 로그인
2. 백업파일이 저장될 폴더 생성
- mkdir /backup
3. 퍼미션 조정
- chmod 700 /backup
4. 백업 스크립트 작성 ( 설정바꿀수 있는 부분은 빨간색,초록색 표시 )
- cd /root
- vi backup.sh
[내용]
#!/bin/bash
tar -cvzf /backup/testuser.`date +%Y%m%d%H%M%S`.tgz {백업할 경로}
find /backup/ -type f -mtime +10 | sort | xargs rm -f
// /backup/testuser은 저장될 백업 파일명
- chmod 700 backup.sh
ex) db 포함된 백업 스크립트
tar 명령어는 파일 압축 백업을 실시합니다.
mysqldump 명령어는 데이터베이스 백업을 실시합니다.
find 관련 명령어는 10일이 지난 파일을 삭제합니다.
-- tar 와 mysqldump 는 여러 줄 쓰셔도 됩니다.
#!/bin/bash
tar -cvzf /backup/bkjeon.`date +%Y%m%d%H%M%S`.tgz /var/www/html
mysqldump --extended-insert=FALSE -uroot -ptest1234 bkjeonDB > /backup/bkjeonDB.`date +%Y%m%d%H%M%S`.sql
find /backup/ -type f -mtime +10 | sort | xargs rm -f
** 위에 mysqldump 하는 과정에서 --extended-insert=FALSE 옵션은 insert를 여러개의 명령어로 분기시켜주는데 저 옵션을 빼주자.
그러면 한번에 insert되는 명령문으로 덤프가 되어 복구할때도 시간이 적게 걸린다.
5. 주기적인 실행
- crontab -e
- 0 4 * * * /root/backup.sh 1>/dev/null 2>/dev/null // 오전 4시 실행
'Infra > Linux & Unix' 카테고리의 다른 글
kali linux 설치 (0) | 2019.04.12 |
---|---|
[ubuntu] crontab 확인 / 등록 (0) | 2019.04.12 |
[ubuntu] dd명령을 이용한 이미지 백업 (0) | 2019.04.10 |
[ubuntu] 다른 서버 원격 접속 및 명령 (0) | 2019.04.10 |
[ubuntu] 쉘 스크립트 처음 #!/bin/bash 사용이유 (0) | 2019.04.10 |