■実は何故これが動くのか、書いた本人が良くわかっていない。。。w
多分別の環境でも使うので、貼っておく。
1.対象は、vmware playerのデフォルト「${HOME}/vmware」
2.対象が4GBを超えている場合は何もしない。
※4GB超えは以下で対応
rsyncによる仮想マシンの自動バックアップスクリプト(bash版)
http://ameblo.jp/labunix/entry-11091054060.html
3.バックアップ先は、「${HOME}/bak.vmware」
4.4世代までローテーションする
※「tar.gz」「tar.gz.0」「tar.gz.1」「tar.gz.2」の4世代
$ vim vmware_tgz;chmod +x vmware.tgz
#!/bin/bash
多分別の環境でも使うので、貼っておく。
1.対象は、vmware playerのデフォルト「${HOME}/vmware」
2.対象が4GBを超えている場合は何もしない。
※4GB超えは以下で対応
rsyncによる仮想マシンの自動バックアップスクリプト(bash版)
http://ameblo.jp/labunix/entry-11091054060.html
3.バックアップ先は、「${HOME}/bak.vmware」
4.4世代までローテーションする
※「tar.gz」「tar.gz.0」「tar.gz.1」「tar.gz.2」の4世代
$ vim vmware_tgz;chmod +x vmware.tgz
#!/bin/bash
export MYHOME="${HOME}"
export VM="vmware"
export BAK="bak.vmware"
export MAX="2"
for CHK in ${VM}/*/;do
if [ -d ${MYHOME}/${CHK} ];then
echo "OK: Checking ... ${MYHOME}/${CHK}"
if [ `du -s ${MYHOME}/${CHK} | awk '{print $1}'` -gt "4194304" ];then
echo "SKIP: 4GB Over , Do Nothing ${CHK}"
else
TARGET_STAMP=`ls -ld ${MYHOME}/${CHK} | awk '{print $6}' | sed s/"-"//g`
TARGET="${CHK}:${TARGET_STAMP}"
BACKUP=`echo ${CHK} | sed s/"${VM}"/"${BAK}"/ | sed s/"\/\$"/".tar.gz"/`
test -f ${MYHOME}/${BACKUP} || tar zcvf ${MYHOME}/${BACKUP} ${MYHOME}/${CHK}
BACKUP_STAMP=`ls -l ${MYHOME}/${BACKUP} | awk '{print $6}' | sed s/"-"//g`
echo "if [ DIR ${TARGET_STAMP} > TGZ ${BACKUP_STAMP} ] -> start backup"
if [ ${TARGET_STAMP} -gt ${BACKUP_STAMP} ];then
for NUM in `seq ${MAX} -1 0`;do
PREV=`echo ${NUM} | awk '{print $1-1}'`
if [ ${PREV} == "-1" ];then
PREV=""
else
PREV=".$PREV"
fi
if [ -f "${MYHOME}/${BACKUP}${PREV}" ];then
echo "Rotation..."
echo "${MYHOME}/${BACKUP}${PREV} -> ${MYHOME}/${BACKUP}.${NUM}"
mv ${MYHOME}/${BACKUP}${PREV} ${MYHOME}/${BACKUP}.${NUM}
fi
done
if [ -f "${MYHOME}/${BACKUP}" ];then
echo "Error: ${MYHOME}/${BACKUP} is not rotated"
echo "${MYHOME}/${CHK} -> ${MYHOME}/${BACKUP}"
exit 1
else
echo "${MYHOME}/${CHK} -> ${MYHOME}/${BACKUP}"
tar zcvf ${MYHOME}/${BACKUP} ${MYHOME}/${CHK}
fi
else
echo "SKIP: Today's Backup done, Do Nothing ${CHK}"
fi
fi
else
echo "Error: Do not Found ${MYHOME}/${CHK}"
fi
done
unset MYHOME VM BAK MAX