우분투 16.04에 도커가 올라가 있고, 도커가 외부 링크로 파일을 저장하고 있는 서비스의 백업 스케줄링 설정에 대해서 알아보겠다.
서버에는 크론탭이 깔려 있어야 한다.
서버 : 우분투 16.04
디비 : 마리아 디비
서비스. : 도커
파일 폴더 : /data/
1. 루트에 백업 폴더를 생성한다.
$ mkdir backup
2. 백업 폴더로 이동 후 스케줄링에서 사용될 sh 파일을 생성한다.
$ vi backup.sh
파일의 내용은 아래와 같다.
#!/bin/sh
TODAY=`/bin/date +%Y%m%d`
docker exec [docker db name] /usr/bin/mysqldump -u root --password=[PW] [db name] > /root/backup/$TODAY-db.sql
zip /root/backup/$TODAY-db.sql.zip /root/backup/$TODAY-db.sql
rm -rf /root/backup/$TODAY-db.sql
zip -r $TODAY-file.zip /root/data/*
첫줄 : TODAY=`/bin/date +%Y%m%d`
오늘 날짜를 TODAY 변수에 저장한다.
둘째줄 : docker exec [docker db name] /usr/bin/mysqldump -u root --password=[PW] [db name]] > /root/backup/$TODAY-db.sql
디비를 백업한다. [docker db name]은 디비 도커를 생성할때 사용된 이름이다. [db name]은 해당 디비의 이름이다. ex) apple_production
셋째줄 : zip /root/backup/$TODAY-db.sql.zip /root/backup/$TODAY-db.sql
위에서 생성된 디비 백업 파일을 압축 파일로 만든다
넷째줄 : rm -rf /root/backup/$TODAY-db.sql
압축 파일을 만들고 디비 백업 파일을 삭제한다.
다섯째줄 : zip -r $TODAY-file.zip /root/data/*
data 폴더를 압축한다.
3. 해당 sh파일의 권한을 수정한다.
$ chmod 100 backup.sh
왜했는지 까먹었다. 안해도 되면 안해도 상관 없다.
4. 크론탭을 설정한다.
$ crontab -e
해당 명령어를 입력하면 크론탭 설정 화면이 나온다. 아래의 내용을 입력 한다.
0 23 * * * /root/backup/backup.sh
앞에 시간은 서버 시간이다. 모르겠으면 해당 블로그를 참조하라
5. 로컬 - 서버 백업 파일 가져오는 스크립트
#!/bin/sh
echo "날짜를 입력하세요 YYYYMMDD: \c "
read word
echo "입력한 날짜는: $word"
echo "$word-db.sql.zip 다운로드 시작......"
scp root@192.168.0.1:/root/backup/$word-db.sql.zip [저장 폴더 경로]
요레하면 날짜를 입력해서 파일을 가져올 수 있다
6. 기타 커맨드 모음
특정 폴더에 압축 풀기
$ unzip [file name ex) data.zip] -d [압축풀 경로 ex) /root/data/]
서버로 파일 가져오기 & 보내기
$ scp [계정@서버주소:원본경로] [목적파일명]
도커 디비 복구하기
$ cat backup.sql | docker exec -i [docker db name] /usr/bin/mysql -u root --password=[password] [db name]
'개발관련' 카테고리의 다른 글
Ubuntu + Nginx + Cafe24 SSL 적용(Django, Vue) (0) | 2023.02.03 |
---|---|
Ubuntu nginx에 Vue 배포 (0) | 2023.01.31 |
홈페이지에 SNS 공유하기 기능 구현 (0) | 2018.08.20 |
Docker + ROR + Nginx 에 SSL 적용하기 (0) | 2018.08.17 |
디지털 오션 - 우분투에 새 유저 추가 후 ssh 셋팅 (0) | 2018.08.09 |