Azureに構築したrsyncサーバにparsyncfpでバックアップする

原始的な方法なんだけど、AzureにLinuxのVMを立ててそこにrsyncでバックアップするスクリプト。rsyncdの設定は普通にすればOK。クライアントはrsyncではなく、parsyncfpを使って爆速にする。これをcronで1日1回動かすので、chmod 755とかその辺は適宜設定して欲しい。ストレージをStandard / Premiumで切り替えてコストも最小に抑えてある。

#!/bin/bash

com="parsyncfp --rsyncopts=\"-a\" --chunksize=32M --nowait --NP=32"
par_dir="/opt"
src_dir="/Photos_and_Videos/"

hosts='your_vm_name'
for vm in $hosts; do
	disk=$(az vm show -g ${vm} -n ${vm} -o tsv --query storageProfile.osDisk.name)
	az disk update -g $vm --sku Premium_LRS --name $disk -o table
	dnames=$(az vm show -g ${vm} -n ${vm} -o tsv --query storageProfile.dataDisks[].name)
	for disk in $dnames; do
		az disk update -g $vm --sku Premium_LRS --name $disk -o table
	done
	az vm start -g $vm -n $vm -o table
done

yyyy=$(date +%Y)
for vm in $hosts; do
	vmurl=$(az network public-ip list -g ${vm} --query [].dnsSettings.fqdn -o tsv)
	${com} --startdir="${par_dir}${src_dir}" ${yyyy} rsync://${vmurl}:${src_dir}
done

for vm in $hosts; do
	az vm deallocate -g $vm -n $vm -o table
	disk=$(az vm show -g ${vm} -n ${vm} -o tsv --query storageProfile.osDisk.name)
	az disk update -g $vm --sku Standard_LRS --name $disk -o table
	dnames=$(az vm show -g ${vm} -n ${vm} -o tsv --query storageProfile.dataDisks[].name)
	for disk in $dnames; do
		az disk update -g $vm --sku Standard_LRS --name $disk -o table
	done
done