En scie cette erreur sur Windows 10 a été causée par un fichier JPEG avec des drapeaux d'attributs de fichiers corrompus, en particulier un bit Directory bidon. Apparemment, l'historique des fichiers a essayé d'obtenir les enfants de ce non-répertoire, a échoué et a silencieusement interrompu l'ensemble de la sauvegarde.
File History fait preuve d'une grave négligence en ce qui concerne a) le signalement des erreurs, et b) le traitement des erreurs.
Recherche de fichiers à problèmes
J'ai écrit la fonction PowerShell suivante pour rechercher les attributs de fichiers hors limites. Utilisez-la comme suit :
- Lancer PowerShell
- Collez toute la fonction, y compris la ligne vide après le dernier "}".
-
Exécutez-le en tapant check-Attribute
et en spécifiant un chemin facultatif, ex. check-Attribute c:\
. Si aucun chemin d'accès n'est donné, l'analyse commencera dans le répertoire courant.
Function check-Attributes {
Param([string]$path)
# Collect all possible attribute bits
$attrBits = 0
[enum]::GetValues([System.Io.FileAttributes]) | ForEach-Object {
$attrBits = $attrBits -bor $_
}
$attrBitMask = -bnot $attrBits
Write-Host "Scanning for out-of-range file/directory attributes..."
$checked = 0
$out_of_range = 0
Get-ChildItem $path -Recurse -ErrorAction SilentlyContinue -ErrorVariable FailedItems | ForEach-Object {
++$checked
Write-Verbose -Message "Checking $_"
if (($_.Attributes -band $attrBitMask) -ne 0) {
Write-Host $_.FullName "has out of range attributes:" $_.Attributes
++$out_of_range
}
}
if ($out_of_range) {
Write-Host
}
Write-Host "Checked" $checked "files/directories, found" $out_of_range "with attributes out of range."
if ($FailedItems) {
# $FailedItems is an array of System.Management.Automation.ErrorRecord
Write-Host "`nEncountered" $FailedItems.length "error(s) while scanning:"
$FailedItems | Foreach-Object {$_.CategoryInfo}
}
}
Il n'est pas garanti que le test des attributs permette de trouver tous les problèmes de corruption. Cependant, comme il signale également les problèmes d'itération des répertoires, il peut exposer d'autres problèmes qui font échouer l'historique des fichiers.
Comment j'ai découvert le problème
J'ai utilisé "Settings Options de sauvegarde pour ce faire. Pour l'ouvrir, recherchez "sauvegarde" dans les paramètres ou cliquez sur Paramètres>Système>Stockage>Afficher les options de sauvegarde>Plus d'options.
Le journal des erreurs peut également être utile. Pour passer directement à la catégorie correcte de l'observateur d'événements pour voir les erreurs, faites défiler jusqu'au bas de la boîte de dialogue ci-dessus, cliquez sur Voir les paramètres avancés (cela ouvre le Panneau de configuration)>Paramètres avancés>Ouvrir les journaux d'événements de l'historique des fichiers pour voir les événements ou erreurs récents. Le chemin du journal est %SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-FileHistory-Engine%4BackupLog.evtx
Le fichier problématique se trouvait dans l'un des centaines de sous-répertoires de mon répertoire "Photos". J'ai d'abord créé un nouveau répertoire parallèle "Photos-Pending-Backup", je l'ai exclu de la sauvegarde de File History, puis j'y ai déplacé tous les répertoires de "Photos". J'ai lancé l'historique des fichiers pour vérifier l'exactitude des données et l'absence d'erreurs.
Important : Lors de la vérification du succès, regardez la section Aperçu des options de sauvegarde pour une nouvelle heure d'achèvement. Il n'y a pas d'indication d'erreurs ici.
Après une sauvegarde réussie, j'ai déplacé de manière incrémentielle des lots de répertoires dans "Photos" jusqu'à ce qu'une sauvegarde échoue, puis je les ai déplacés jusqu'à ce qu'une sauvegarde réussisse, en répétant jusqu'à ce que je trouve le problème.
J'ai décidé de ne pas exclure tous les sous-répertoires de la sauvegarde car a) cela prendrait beaucoup de temps de les choisir un par un à l'aide de la commande Options de sauvegarde UI, b) il serait facile d'en manquer un puisque les dossiers exclus ne sont pas affichés dans l'ordre de tri, et c) cela prendrait également beaucoup de temps pour les désexclure.