[Growi] 백업 스크립트를 아예 못 쓰면...
개시하다
앞서 다음과 같은 기사가 공개됐다.
간단하게 설명하자면'
Growi
도구Wiki
로 만들어졌다'는 것이다. 최근에 나는 백업 설정이 매우 성대하다는 것을 알아차렸기 때문에 상세한 상황을 기사에 쓰고 싶다.나는 나 자신과 같은 일을 조금이라도 줄여도 좋다고 생각한다.
컨디션
Docker
CentOS Linux release 7.6.1810
/
├── opt
│ └── docker
│ └── growi
│ ├── backup.sh
│ └── backup
└── home
다른 것도 많은데 여기서 생략하겠습니다.백업 스크립트(최초)
당초
Docker 19.03.5
의 내용은 다음과 같다.backup.sh
docker exec -d {mongodb コンテナ名} mongodump --archive=mongodb.archive
docker cp {mongodb コンテナ名}:/mongodb.archive /opt/docker/growi/backup/growi_`date "+%Y%m%d"`.archive
find ./ -mtime +7 -name "*.archive" | xargs ls -ltrh
rsync -av /opt/docker/growi/backup/ {マウント先パス}
의도backup.sh
데이터가 포함된 Growi
부터 매일 mongodb
시간 스탬프를 받아서 dump
에 /opt/docker/growi/backup
형식으로 저장.archive
에서 동기화이것
rsync
은 매일 심야에 활동한다.※ 눈치가 빠른 사람은 이럴 때 많은 일을 한 것을 알아차릴 수 있다.
무슨 일이 있었는지
한마디로'후원은 사라지지 않고 계속될 것'이라는 컨디션이다.
crontab
이하는 말할 것도 없고 마운트 지점도 매일/opt/docker/growi/backup
남은 상태가 계속되고 있다.Why?
원인은 주로 두 가지가 있다.
① .archive 명령 오류와xargs 경로 지정
첫 번째 이유는 다음 명령이다.
find ./ -mtime +7 -name "*.archive" | xargs ls -ltrh
find
의 결과를 find ./ -mtime +7 -name "*.archive"
에 맡겼지만 관건xargs
에서 집행된 것은 xargs
명령이었다.※
ls
아래 내용을 참고하세요.이는 단서가 있는 것으로,'삭제 대상만 추출했는지 확인'을 위해 당분간
xargs
이 아닌rm -rf
이다.이를 잊은 결과'매일 7일 이상 업데이트
ls
파일.archive
'이라는 무의미한 처리를 반복했다.또한 간단히 지정
ls
된 경로도 문제가 있고, 셸 실행find
된 경로 지정도 가능하지만 ./
한 경우cron
부터 조개껍질이 실행되기 때문에 home
이외의 경로/opt/docker/growi/backup
를 말아 넣을 가능성이 있다..archive
패스 방법을 전혀 몰라서 솔직히 위험하다.이 처리는 아래와 같이 정확하다.
find /opt/docker/growi/backup -mtime +7 | xargs rm -rf
절대 경로로 백업 디렉터리를 지정하기로 결정했기 때문에 파일 이름을 사용하지 않고 업데이트 날짜에만 추출합니다.그리고
cron
의 결과를 find
에 맡기고 실시xargs
한다.② rm-rf의 옵션 부족
이렇게 수정된 경우에도 "Mount 측"은 이전 백업을 유지합니다.
이 원인은 아래의 기술이다.
rsync -av /opt/docker/growi/backup/ {マウント先パス}
rsync
는 아래 내용을 참고하십시오.백업의 동기화 자체는 이미 얻었지만'동기화 원본에서 비동기화 원본을 삭제하는 파일'을 지정하지 않았기 때문에'과거의 백업이
rsync
에서 사라지더라도 목적지를 마운트하면 과거의 데이터를 보존할 수 있다'는 것이다.이것은
/opt/docker/growi/backup
에 rsync
를 더해서 해결한다.rsync --delete -av /opt/docker/growi/backup/ {マウント先パス}
백업 스크립트 재검토
지금까지의 결과에 따라 다음과 같음
--delete
이 수정되었다.backup.sh
docker exec -d {mongodb コンテナ名} mongodump --archive=mongodb.archive
docker cp {mongodb コンテナ名}:/mongodb.archive /opt/docker/growi/backup/growi_`date "+%Y%m%d"`.archive
find /opt/docker/growi/backup -mtime +7 | xargs rm -rf
rsync --delete -av /opt/docker/growi/backup/ {マウント先パス}
총결산
이번에
backup.sh
에 대한 백업용 스크립트를 정리했습니다. 백업을 계속할지 여부입니다.Growi
의 규모가 커지면 백업 크기도 바보가 되지 않아 서버를 압박한다.사고가 나기 전에 눈치채고 수정을 했으니 정말 다행이다.
근본적으로 한 사람이 이 각본을 제작하고 운용한다.
핵심 부분을 여러 사람이 검증을 바탕으로 사용하면 이번과 같은 오류와 지식 부족을 막을 수 있다는 게 좋은 교훈이다.
Reference
이 문제에 관하여([Growi] 백업 스크립트를 아예 못 쓰면...), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nekoniki/articles/042bb1790b222c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)