GCP의 Compute Engine에서 정기 스냅샷 얻기

5469 단어 gcpgce

소개



Google Cloud Platform에서 compute engine을 정기 스냅샷을 얻고 싶습니다.

2019년 12월 19일 추가
→보다 간단한 방법이 있었으므로, 얼른 끝내고 싶은 분은 여기를 참조해 주세요.

개요



매일 야간에 스냅샷 받기
7일 이상 이전 스냅샷 삭제

환경



클라우드: Google Cloud Platform
OS:CentOS 8
tool:Google Cloud SDK

Google Cloud SDK를 사용하는 방법을 모르는 사람은 여기을 참조하십시오.

사용법



인스턴스 목록 검색
[google@ap-srv1 ~]$ gcloud compute instances list
NAME     ZONE               MACHINE_TYPE               PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
ap-srv1  asia-northeast1-a  f1-micro                   192.168.5.3  xx.xx.xxx.xxx  RUNNING
ap-srv2  asia-northeast1-a  g1-small                   192.168.5.4  xx.xx.xxx.xxx  RUNNING
web-srv1 asia-northeast1-a  g1-small                   192.168.5.7  xx.xx.xxx.xxx  RUNNING

인스턴스 목록에서 필터를 지정하여 인스턴스를 좁히기
예: 'web'로 시작하는 인스턴스만 표시
[google@ap-srv1 ~]$ gcloud compute instances list --filter="name ~ ^web"
NAME     ZONE               MACHINE_TYPE               PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
web-srv1 asia-northeast1-a  g1-small                   192.168.5.7  xx.xx.xxx.xxx  RUNNING

다른 사용법은 본가 구글의 해설 페이지을 참조하십시오.

수동으로 스냅샷 가져오기



우선은 수동으로 스냅샷을 취득해 본다.

명령은 이렇게
gcloud compute disks snapshot -q 인스턴스 이름 --zone=존 이름 --snapshot-names=스냅샷 이름
[google@ap-srv1 ~]$ gcloud compute disks snapshot -q ap-srv1 --zone=asia-northeast1-a --snapshot-names=temporary-snapshot-20191213
Creating snapshot(s) temporary-snapshot-20191213...done.

가능한지 확인
[google@ap-srv1 ~]$ gcloud compute snapshots list --filter="name ~ ^temp"
NAME                         DISK_SIZE_GB  SRC_DISK                         STATUS
temporary-snapshot-20191213  100           asia-northeast1-b/disks/server1  READY

할 수있는 것 같습니다.

수동으로 스냅샷 삭제


[google@ap-srv1 ~]$ gcloud compute snapshots delete temporary-snapshot-20191213
The following snapshots will be deleted:
 - [temporary-snapshot-20191213]

Do you want to continue (Y/n)?  Y

Deleted [https://www.googleapis.com/compute/v1/projects/yourproject-000000/global/snapshots/temporary-snapshot-20191213].

삭제할 수 있었지만, 계속해 좋은지 확인이 들어가는 것 같으므로, 옵션에 quiet를 붙인다.

gcloud compute snapshots delete temporary-snapshot-20191213 --quiet

확인 없이 삭제되게 되었지만, 7일 이상 전의 녀석을 삭제하고 싶기 때문에, 이하의 커멘드로 타임 스탬프를 취득

gcloud compute snapshots list --filter="creationTimestamp
또한 uri를 지정하여 삭제할 수 있으므로 uri 옵션을 붙여 삭제 대상을 필터링합니다.

gcloud compute snapshots list --filter="creationTimestamp

스크립트 만들기



snapshot.sh
INSTANCE_NAME=ap-srv1
SNAPSHOT_ZONE_NAME=asia-northeast1-a
DAYS_OLD="$(date -d "-7 days" +%Y%m%d)"

# create the snapshot

gcloud compute disks snapshot -q ${INSTANCE_NAME} --zone=${SNAPSHOT_ZONE_NAME} --snapshot-names=${INSTANCE_NAME}-`date +'%Y%m%d'`

#
# DELETE OLD SNAPSHOTS (OLDER THAN 7 DAYS)
#

gcloud compute snapshots list --filter="creationTimestamp<$DAYS_OLD" --uri | while read SNAPSHOT_URI; do

 #echo $SNAPSHOT_URI
 gcloud compute snapshots delete $SNAPSHOT_URI

done

스크립트를 crontab에 등록하면 정기적으로 스냅샷을 얻을 수 있습니다.

끝에



GCP 콘솔에서도 확인했다.



좋아. 제대로 된 것 같다.



응? !



콘솔에서 할 수 있게 된거야!

몰랐다~, 모~

좋은 웹페이지 즐겨찾기