Source/NuGetGallery.Worker/Jobs/BackupWarehouseJob.cs (40 lines of code) (raw):

using System; using System.ComponentModel.Composition; using System.Data.SqlClient; using NuGetGallery.Operations; using NuGetGallery.Operations.Tasks; using NuGetGallery.Operations.Tasks.Backups; namespace NuGetGallery.Worker.Jobs { [Export(typeof(WorkerJob))] public class BackupWarehouseJob : WorkerJob { public override TimeSpan Period { get { return TimeSpan.FromMinutes(30); } } public override TimeSpan Offset { get { return TimeSpan.FromMinutes(5); } } public override void RunOnce() { Logger.Info("Running Warehouse Backup job"); var warehouse = new SqlConnectionStringBuilder(Settings.WarehouseConnectionString); ExecuteTask(new BackupWarehouseTask { ConnectionString = warehouse, WhatIf = Settings.WhatIf, IfOlderThan = 60, DoNotPoll = false // Warehouse backups take a while... }); Logger.Info("Complete Warehouse Backup job"); } } }