Skip to content

Instantly share code, notes, and snippets.

@ikapper
Created April 8, 2020 05:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ikapper/435e6c3ff5628bb689cb28bfc1678066 to your computer and use it in GitHub Desktop.
Save ikapper/435e6c3ff5628bb689cb28bfc1678066 to your computer and use it in GitHub Desktop.
#!/bin/bash
###########################
#
# 注意: このスクリプトが存在するフォルダから実行することを前提としている。
#
# docker desktop環境に別環境のvolumeを復元する。
# docker desktopにある同名のvolumeは、削除される。
#
###########################
# docker volume ls | awk 'NR>1 {print "VOLUME_LIST+=(\"" $2 "\")"}' | pbcopy
# 上のコマンドでコピペできる。
VOLUME_LIST=(...)
echo Docker Desktop環境に移行...
eval $(docker-machine env -u)
if [ $? -eq 0 ]; then
echo Docker Desktopに既に存在するこれらのvolumeを削除していいですか?
echo ${VOLUME_LIST[@]}
echo -n 以上のうち存在するvolumeが削除されます。よろしいですか? [y/n]:
read yn
case "$yn" in
[yY] ) echo ok ;;
* ) echo 処理を中止します。 ;exit 2 ;;
esac
for vol in "${VOLUME_LIST[@]}"
do
docker volume rm ${vol}
done
echo 既存のvolumeの削除を終了...
# volumeの作成・復元
backups=($(ls | grep tar))
for bu in "${backups[@]}"
do
volname=$(echo $bu | sed -e "s/backup_//g" | sed -e "s/.tar//g")
docker volume create ${volname}
echo ボリューム${volname}を作成・リストア...
docker run --rm -v ${volname}:/vol_data -v $(pwd):/backup ubuntu bash -c "cd /vol_data && tar xvf /backup/${bu} --strip 1"
echo ボリューム${volname}のリストアが完了
done
else
echo 失敗
exit -1
fi
echo 全ての処理が終了しました。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment