原始的な方法なんだけど、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