6
votes

Comment supprimer d'anciens fichiers dans un conteneur Azure

Je prévois de sauvegarder mes fichiers VHD Azure en fermant mon VM, puis de copier les fichiers VHD du conteneur de production vers un conteneur de sauvegarde. Comment puis-je automatiser la suppression des fichiers VHD une semaine dans le conteneur de sauvegarde?


0 commentaires

3 Réponses :


1
votes

C'est quelque chose qui n'est pas disponible directement hors de la boîte. Vous devriez écrire du code vous-même. Essentiellement les étapes seraient:

  1. Répertoriez tous les blobs de votre conteneur de sauvegarde. La liste des blob rendrait des blobs avec ses propriétés. L'une des propriétés serait lastmodifieddate (ce serait dans utc).
  2. Vous pouvez ensuite mettre votre logique pour trouver des blobs modifiés il y a des jours "x". Vous allez alors aller de l'avant et supprimer ces blobs.

    Quelques autres choses:

    • Vous avez mentionné que votre conteneur de sauvegarde contient des VHDS qui sont essentiellement des blobs de page. Lorsque vous listez des blobs, vous obtiendrez également un type de blob afin que vous puissiez filtrer davantage la liste par blob Type (= pageBlob )
    • En ce qui concerne l'automatisation du processus, vous pouvez l'écrire dans un script PowerShell puis la planifier à l'aide de Windows Scheduler. Si vous êtes à l'aise d'écrire nœud.js, vous pouvez écrire la même logique à l'aide de Node.js et utilisez Windows Azure Mobile Service Scheduler.

3 commentaires

Je n'ai pas beaucoup fait avec PowerShell. Toute chance que vous puissiez répertorier quelques exemples du code requis?


Vous n'avez pas vraiment à le faire dans PowerShell. Vous pouvez créer une application exécutable simple et planifier à l'aide du planificateur Windows.


Merci pour les suggestions, mais malheureusement, je ne suis pas un programmeur. C'est trop mal que l'azur n'a pas de type de planificateur pour cette tâche.



8
votes

Si vous pouvez accepter d'utiliser PowerShell, cela le ferait pour vous. Il enregistre un travail planifié pour exécuter quotidiennement et supprimera la pageBlob dans le conteneur spécifié.

$taskTrigger = New-ScheduledTaskTrigger -Daily -At 12:01AM
Register-ScheduledJob -Name DeleteMyOldFiles -Trigger $taskTrigger -ScriptBlock {
    $isOldDate = [DateTime]::UtcNow.AddDays(-7)

    Get-AzureStorageBlob -Container "[YOUR CONTAINER NAME]" |
        Where-Object { $_.LastModified.UtcDateTime -lt $isOldDate -and $_.BlobType -eq "PageBlob" } |
        Remove-AzureStorageBlob
}


2 commentaires

Merci pour le script. Je n'ai pas pu obtenir la partie de planification du travail, donc je l'ai dépouillé et la programmée manuellement sur le planificateur de tâches. Et si j'ai plus d'un nom de conteneur?


Utilisez-vous PowerShell version 3.0? Si oui, ce script fonctionnera.



1
votes

J'ai trouvé cette réponse lorsque vous essayez de supprimer tout le conteneur. Utilisation de la réponse de Rick en tant que modèle, j'ai proposé cet essai what-si pour déterminer quels conteneurs seraient supprimés: xxx

alors quand je suis convaincu que la liste devrait Soyez supprimé, j'ai utilisé -force afin de ne pas avoir à confirmer chaque suppression: xxx


1 commentaires

J'apprécie votre publication de la version plus strillée de celle-ci que je peux planifier moi-même dans le planificateur de tâches.