2016-07-30 5 views
0

Я хотел бы узнать, есть ли способ создать автоматическое сохранение резервной копии для экземпляра (диск более конкретно). Я не очень разбираюсь в консоли, поэтому предпочитаю графический интерфейс, но если нет, я буду рад узнать о консольном методе.Создание автоматического сохранения моментального снимка диска (резервное копирование) на облачной платформе Google

Я искал это, но нашел решение для SQL.

Спасибо!

ответ

1

UPDATE:

Сценарий сильно изменился, так как я первый дал этот ответ - пожалуйста, смотрите GitHub репо для последней версии кода: https://github.com/jacksegal/google-compute-snapshot

ОРИГИНАЛЬНЫЙ ОТВЕТ:

Я имел та же проблема, поэтому я создал простой сценарий оболочки для ежедневного моментального снимка и удаления всех снимков за 7 дней: https://github.com/jacksegal/google-compute-snapshot

#!/usr/bin/env bash 
export PATH=$PATH:/usr/local/bin/:/usr/bin 

# 
# CREATE DAILY SNAPSHOT 
# 

# get the device name for this vm 
DEVICE_NAME="$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/device-name" -H "Metadata-Flavor: Google")" 

# get the device id for this vm 
DEVICE_ID="$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/id" -H "Metadata-Flavor: Google")" 

# get the zone that this vm is in 
INSTANCE_ZONE="$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/zone" -H "Metadata-Flavor: Google")" 

# strip out the zone from the full URI that google returns 
INSTANCE_ZONE="${INSTANCE_ZONE##*/}" 

# create a datetime stamp for filename 
DATE_TIME="$(date "+%s")" 

# create the snapshot 
echo "$(gcloud compute disks snapshot ${DEVICE_NAME} --snapshot-names gcs-${DEVICE_NAME}-${DEVICE_ID}-${DATE_TIME} --zone ${INSTANCE_ZONE})" 


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

# get a list of existing snapshots, that were created by this process (gcs-), for this vm disk (DEVICE_ID) 
SNAPSHOT_LIST="$(gcloud compute snapshots list --regexp "(.*gcs-.*)|(.*-${DEVICE_ID}-.*)" --uri)" 

# loop through the snapshots 
echo "${SNAPSHOT_LIST}" | while read line ; do 

    # get the snapshot name from full URL that google returns 
    SNAPSHOT_NAME="${line##*/}" 

    # get the date that the snapshot was created 
    SNAPSHOT_DATETIME="$(gcloud compute snapshots describe ${SNAPSHOT_NAME} | grep "creationTimestamp" | cut -d " " -f 2 | tr -d \')" 

    # format the date 
    SNAPSHOT_DATETIME="$(date -d ${SNAPSHOT_DATETIME} +%Y%m%d)" 

    # get the expiry date for snapshot deletion (currently 7 days) 
    SNAPSHOT_EXPIRY="$(date -d "-7 days" +"%Y%m%d")" 

    # check if the snapshot is older than expiry date 
if [ $SNAPSHOT_EXPIRY -ge $SNAPSHOT_DATETIME ]; 
     then 
    # delete the snapshot 
     echo "$(gcloud compute snapshots delete ${SNAPSHOT_NAME} --quiet)" 
    fi 
done 
+0

Как мы можем настроить задания cron на вычислительном двигателе? –

+0

@AbdulRehman - это то же самое, что настроить работу cron на любом другом поставщике облака - см. Следующие инструкции: https://askubuntu.com/a/2369. Я написал инструкции о том, как настроить cron для этого конкретного скрипта в github readme: https://github.com/jacksegal/google-compute-snapshot. –

+0

Привет, @JackSegal - Мне нужно удалить снимки старше 10 дней, поэтому я изменил этот бит кода: 'echo -e" \ nUsage: $ 0 [-d 7] "1> & 2', это правильно, что я изменил изменить интервал дней или мне нужно внести изменения в другое место? –

0

Два комментарии об этом очень полезный скрипт (если вы используете один из приведенных выше)

Линия

--regexp «(. gcs-. ..) | (- $ {DEVICE_ID} -) "

Вероятно, есть ошибка, это перечисляет все, начиная с ГКС Я думаю, что следует читать

--regexp" (. gcs-) -. (-. $ {DEVICE_ID} -.

по крайней мере, это один я использую для вывода ожидаемого результата

Кроме того, этот --regexp теперь осуждается, если вы заботитесь о предупреждении, вы можете использовать

SNAPSHOT_LIST = "$ (gcloud вычислить список моментальных снимков --filter =" имя ~ '(. gcs-.) -. (- $ {DEVICE_ID} -.) "--uri)"

Автор имеет более новую версию на его мерзавцем, это только комментарии по поводу вышеприведенного сценария. Регулярное выражение довольно опасно, так как, как есть, приведенный выше сценарий в основном удаляет моментальные снимки из других виртуальных машин с использованием того же скрипта.