Skip to main content
Solved

report sul totale dei backup mensili gfs

  • April 10, 2025
  • 6 comments
  • 61 views

atinivelli
Forum|alt.badge.img+3

ciao, per un cliente devo cercare di valutare l’ingombro di dati utile per stimare lo spazio necessario su Veeam Data Cloud Vault. 

Per farlo servirebbe calcolare a quanto ammonti la somma di tutti i mensili che vengono fatti dai job che hanno questa retention GFS impostata.

Questo report di Veeam ONE GFS Backup Files

https://helpcenter.veeam.com/docs/one/reporter/backup_copy_gfs.html?ver=120

sembrerebbe fare al caso in esame, e lo proverò appena possibile.

Chiedevo se qualcuno ha già esperienze in merito da condividere 😊

grazie

Best answer by DChiavari

Si, sicuramente in ambienti più grandi con migliaia di restore point usare Get-VBRBackup senza alcun parametro/filtro può essere lento… 

# Get backups (if no filter is specified, all backups)
$backups = Get-VBRBackup

Come detto, il mio script è giusto un “semilavorato” che sicuramente va calato con delle modifiche nel contesto specifico dell’ambiente. 

Ad esempio, come possibile ottimizzazione, si potrebbe filtrare a priori, includendo solo i backup generati dai job che hanno la retention GFS abilitata. Questo dovrebbe far guadagnare in performance.

# Initialize variables to store the count and total size of GFS restore points
$gfsRestorePoints = @()
$totalSize = 0

# Get only Backup Jobs (and Backup Copy Jobs) for which GFS retention is enabled
$gfsJobs = @()
$gfsBackups = @()
foreach ($bkJob in $(Get-VBRJob)) {
$job_options = Get-VBRJobOptions -Job $bkJob
if ($job_options.Gfspolicy.IsEnabled -eq $True) {
$gfsJobs += $bkJob
$gfsBackups += $(Get-VBRBackup -Name $bkJob.Name)
}
}

# Get Restore Points for GFS Backups
foreach ($backup in $gfsBackups) {
$childBackups = $backup.FindChildBackups()
$restorePoints = Get-VBRRestorePoint -Backup $childBackups

# Cycle through Restore Points and check if they are GFS Fulls
foreach ($rp in $restorePoints) {
$storage = $rp.GetStorage()
if ($storage.GfsPeriod -ne "None") {
$gfsRestorePoints += $storage | select @{n='Name';e={$rp.Name}}, GfsPeriod, CreationTime, @{n='Size (GB)';e={[math]::Round($_.Stats.BackupSize / 1GB, 2)}}
$totalSize += [math]::Round($storage.Stats.BackupSize / 1GB, 2)
}
}
}

# Print out GFS restore points in a table
$gfsRestorePoints | ft -AutoSize

# Communicate results
Write-Host "Total number of GFS restoe points: " $gfsRestorePoints.Count
Write-Host "Total size of GFS restore points : " $totalSize " GB"

 

Nel mio mini-ambiente di test, dove comunque lo script impiegava poco anche prima, la differenza è stata significativa (circa 4.5x):

 

6 comments

fbonez
Forum|alt.badge.img+1
  • New Here
  • 4 comments
  • April 11, 2025

Ciao Alessandro,

se devi calcolare lo spazio necessario per Vault esiste da qualche tempo il calcolatore apposito. 
lo trovi al link dí seguito https://www.veeam.com/calculators/simple/vdc/vault

Non è necessario che tu calcoli lo spazio occupato dagli attuali backup. Basta inserire lo spazio occupato dai server in produzione e la retention che vuoi raggiungere. Il resto lo fa tutto lui. 
 

Franz


atinivelli
Forum|alt.badge.img+3
  • Author
  • Veeam Legend
  • 231 comments
  • April 11, 2025

se devi calcolare lo spazio necessario per Vault esiste da qualche tempo il calcolatore apposito. 
lo trovi al link dí seguito https://www.veeam.com/calculators/simple/vdc/vault

 

grazie, in effetti agendo “d’isTinto” sarei andato lì 😉

forse c’è stato un po’ di degrado dell’informazione fra quello che ha detto il collega presale veeam al cliente, e quello che ha riportato a me.

Proverò a chiarire meglio le cose coinvolgendo direttamente il collega.

Intanto grazie, come sempre questo thread, si spera, potrà essere utile anche a chi lo leggerà in futuro.


MarcoLuvisi
Forum|alt.badge.img+6
  • VUG Leader
  • 320 comments
  • April 14, 2025

Citando i “cuggini” di OOTBI il calcolatore verso S3: https://objectfirst.com/it/backup-storage-calculator/


DChiavari
Forum|alt.badge.img+7
  • Veeam MVP
  • 57 comments
  • April 15, 2025

Se dovesse essere utile, questo script “semi-lavorato” può aiutare a ricavare velocemente i backup GFS e la loro dimensione:

 

# Initialize variables to store the count and total size of GFS restore points
$gfsRestorePoints = @()
$totalSize = 0

# Get backups (if no filter is specified, all backups)
$backups = Get-VBRBackup

foreach ($backup in $backups) {
$childBackups = $backup.FindChildBackups()
$restorePoints = Get-VBRRestorePoint -Backup $childBackups

# Cycle through restore points and check if they are GFS points
foreach ($rp in $restorePoints) {
$storage = $rp.GetStorage()
if ($storage.GfsPeriod -ne "None") {
$gfsRestorePoints += $storage | select @{n='Name';e={$rp.Name}}, GfsPeriod, CreationTime, @{n='Size (GB)';e={[math]::Round($_.Stats.BackupSize / 1GB, 2)}}
$totalSize += [math]::Round($storage.Stats.BackupSize / 1GB, 2)
}
}
}

# Print out GFS restore points in a table
$gfsRestorePoints | ft -AutoSize

# Communicate results
Write-Host "Total number of GFS restoe points: " $gfsRestorePoints.Count
Write-Host "Total size of GFS restore points : " $totalSize " GB"

 

Esempio di output:

 


atinivelli
Forum|alt.badge.img+3
  • Author
  • Veeam Legend
  • 231 comments
  • April 24, 2025

Se dovesse essere utile, questo script “semi-lavorato” può aiutare a ricavare velocemente i backup GFS e la loro dimensione:

 

sto provando lo script ma forse su un VBR molto “grande” il tempo impiegato diventa molto elevato (ieri l’ho lasciato girare per alcune ore). Vi aggiorno se riesco a vederlo terminare e/o lo provo su un VBR di dimensioni più modeste.


DChiavari
Forum|alt.badge.img+7
  • Veeam MVP
  • 57 comments
  • Answer
  • May 5, 2025

Si, sicuramente in ambienti più grandi con migliaia di restore point usare Get-VBRBackup senza alcun parametro/filtro può essere lento… 

# Get backups (if no filter is specified, all backups)
$backups = Get-VBRBackup

Come detto, il mio script è giusto un “semilavorato” che sicuramente va calato con delle modifiche nel contesto specifico dell’ambiente. 

Ad esempio, come possibile ottimizzazione, si potrebbe filtrare a priori, includendo solo i backup generati dai job che hanno la retention GFS abilitata. Questo dovrebbe far guadagnare in performance.

# Initialize variables to store the count and total size of GFS restore points
$gfsRestorePoints = @()
$totalSize = 0

# Get only Backup Jobs (and Backup Copy Jobs) for which GFS retention is enabled
$gfsJobs = @()
$gfsBackups = @()
foreach ($bkJob in $(Get-VBRJob)) {
$job_options = Get-VBRJobOptions -Job $bkJob
if ($job_options.Gfspolicy.IsEnabled -eq $True) {
$gfsJobs += $bkJob
$gfsBackups += $(Get-VBRBackup -Name $bkJob.Name)
}
}

# Get Restore Points for GFS Backups
foreach ($backup in $gfsBackups) {
$childBackups = $backup.FindChildBackups()
$restorePoints = Get-VBRRestorePoint -Backup $childBackups

# Cycle through Restore Points and check if they are GFS Fulls
foreach ($rp in $restorePoints) {
$storage = $rp.GetStorage()
if ($storage.GfsPeriod -ne "None") {
$gfsRestorePoints += $storage | select @{n='Name';e={$rp.Name}}, GfsPeriod, CreationTime, @{n='Size (GB)';e={[math]::Round($_.Stats.BackupSize / 1GB, 2)}}
$totalSize += [math]::Round($storage.Stats.BackupSize / 1GB, 2)
}
}
}

# Print out GFS restore points in a table
$gfsRestorePoints | ft -AutoSize

# Communicate results
Write-Host "Total number of GFS restoe points: " $gfsRestorePoints.Count
Write-Host "Total size of GFS restore points : " $totalSize " GB"

 

Nel mio mini-ambiente di test, dove comunque lo script impiegava poco anche prima, la differenza è stata significativa (circa 4.5x):