2019년 03월 19일 17시 15분
우분투 16.04에 도커가 올라가 있고, 도커가 외부 링크로 파일을 저장하고 있는 서비스의 백업 스케줄링 설정에 대해서 알아보겠다.
서버에는 크론탭이 깔려 있어야 한다.
서버 : 우분투 16.04
디비 : 마리아 디비
서비스. : 도커
파일 폴더 : /data/
$ mkdir backup
$ 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 폴더를 압축한다.
$ chmod 100 backup.sh
왜했는지 까먹었다. 안해도 되면 안해도 상관 없다.
$ crontab -e
해당 명령어를 입력하면 크론탭 설정 화면이 나온다. 아래의 내용을 입력 한다.
0 23 * * * /root/backup/backup.sh
앞에 시간은 서버 시간이다. 모르겠으면 해당 블로그를 참조하라
#!/bin/sh
echo "날짜를 입력하세요 YYYYMMDD: \c "
read word
echo "입력한 날짜는: $word"
echo "$word-db.sql.zip 다운로드 시작......"
scp [email protected]:/root/backup/$word-db.sql.zip [저장 폴더 경로]
요레하면 날짜를 입력해서 파일을 가져올 수 있다
특정 폴더에 압축 풀기
$ 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]
Tag : 개발 우분투 서버 docker 도커 백업 스케줄링
공유하기