以下是我拿來做VirtualBox備份的Shell Script。
沒有寫的很好,大家可以參考並小力鞭策。
#!/bin/bash
#今天的日期
time="$(date '+%Y%m%d')"
#七天前的日期
timesAgo="$(date -d '7 days ago' '+%Y%m%d')"
#判斷今天禮拜幾
whatWeek="$(date '+%w')"
#目錄路徑
backupDir='/home/user'
# 虛擬機名稱
vmName='虛擬機名稱'
#每天做快照;因為有sudo所以一開始用自動回答檔
expect -c "
spawn sudo VBoxManage snapshot $vmName take $time
expect {
\"password\" {
send \"你的密碼\r\"
}
}
expect ]#
"
#待機10秒。要先讓先前的快照程序完成結束
sleep 10
# 刪除七天前的快照;因為我的快照都是以日期定義。
# 所以可以直接刪日期
sudo VBoxManage snapshot $vmName delete $timesAgo
#遇到星期日就做以下動作
#匯出動作
#確認是否有超過90天的匯出檔
#eq 等於 ; ne 不等於
if [ $whatWeek -eq "0" ]
then
sudo find $backupDir -iname "*.ova" -type f -mtime +90 | xargs rm -f {};
sudo VBoxManage controlvm $vmName poweroff
#這邊可以不用cd,而是直接在匯出那設定好路徑就好
cd $backupDir
sudo VBoxManage export $vmName -o 匯出名稱$time.ova
sudo VBoxManage snapshot $vmName restore $time
sudo VBoxManage startvm $vmName
fi
留言列表