Histórico do arquivo - Não é possível varrer as bibliotecas do usuário para alterações e executar o backup de arquivos modificados para configuração

2

Ao tentar executar a ferramenta Histórico de Arquivos no Windows 8, ela é executada por cerca de 2 segundos e depois pára. Nenhum arquivo é copiado para a unidade selecionada.

No visualizador de eventos, o único erro que aparece é:

Unable to scan user libraries for changes and perform backup of modified files 
for configuration
C:\Users\win8User\AppData\Local\Microsoft\Windows\FileHistory\Configuration\Config

Eu tentei excluir os arquivos de configuração e o diretório FileHistory na unidade de destino. Configurar o histórico de arquivos novamente resulta no mesmo erro.

Existe uma maneira melhor de rastrear o que está causando a falha? Ou, de alguma forma, obter a ferramenta Histórico de arquivos para criar um arquivo de log mais detalhado que mostre o que está causando o problema?

    
por azl 13.02.2013 / 21:55

2 respostas

0

Aqui está o que eu fiz. Não tenho certeza se todos esses passos são necessários, mas eu só queria ter certeza.

1.

Control panel - > File history - > Advanced Settings - > Open file history event logs e corrija / apague todos os arquivos que estão bagunçando o histórico de arquivos. Para mim, havia um monte nessa pasta:

AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_explorer.exe xxxxx

E eu os deletei. Eles não pareciam importantes.

2. Eu escrevi um script python rápido para encontrar qualquer arquivo com caracteres não ascii em seus nomes. Eu renomei manualmente tudo isso. Pode ser por isso que o histórico de arquivos falha em algumas pastas de músicas!

import os,string
import sys

validChars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ. #^=!()&,_\'-+@%[]{$};'~'

for currdir,folders,filenames in os.walk(r'C:\Users\<username>'):

    //Max filename len on ntfs is 255, but file history adds "F:\FileHistory\<username>\<computer name>\Data" to the front the files and a timestamp to the end so the file really needs to be less than 200 to be safe
    if len(currdir)>200:
        print 200,currdir

    if filter(lambda x: x in validChars, currdir[2:].replace('\',''))!=currdir[2:].replace('\',''):
        print 'chars',currdir,

    for filename in filenames:
        if filter(lambda x: x in validChars, filename)!=filename:
            print 'char2',os.path.join(currdir,filename)

EDIT: Não apague arquivos do Autodesk Inventor, ele irá quebrar o autodesk. o_o

3.

Histórico de arquivos - > selecione drive - > (escolha o seu disco) - > (escolha o seu último backup) - > O histórico de arquivos fornece algum aviso sobre os backups mais recentes que não estão nessa unidade. Eu cliquei em OK.

    
por 24.08.2014 / 04:29
0

Eu adaptei o script postado por apple16 acima para rodar no Python 3 e o aprimorei um pouco. Usando uma combinação de pastas excluídas seletivamente do Histórico de arquivos e deste script para examinar possíveis problemas, reduzi meu problema a dois arquivos com nomes quase idênticos no mesmo diretório. Ambos os arquivos tinham a palavra Espanol no nome do arquivo com um til sobre o n. No entanto, a codificação era: Espan \ N {COMBINING TILDE} ol e a outra como Espa \ N {LATIN SMALL LETTER N WITH TILDE} ol. Ambos os nomes de arquivos listados de forma idêntica no Windows Explorer com o til sobre o n. Quando eu coloco esses dois arquivos em pastas separadas, eles são copiados pelo Fine File History, mas quando estão no mesmo diretório, eles parecem interferir uns com os outros e bloquear a operação File History.

Aqui está o script CheckFileNames.py que eu usei:

#CheckFileNames.py, 10 May 2016, LewisN
#Python 3 version adapted and enhanced by LewisN; based on script by apple16 posted on http://superuser.com/
#Scans Windows file system for potentially problematic directories and files affecting File History operation.
#---------------------------------------------------------------------------------
#SET THE FOLLOWING BEFORE RUNNING:
DirectoryTreeToScan = r'C:\Users\<username>'
DaysBackToList = 0    #Number of days back to list. Set to 0 to list all FLAGGED FILES regardless of file dates.
PrintDates = False    #Set True to show File Creation and Modification dates.

#You may also want to play with the following settings:
flagDirLen=200
flagFullNameLen=200
  # Max filename len on Windows is ~255, but File History adds "F:\FileHistory\<username>\<computer name>\Data" to 
  # the front the files and a timestamp to the end, so backing off on name lengths flagged to be safe.
  # Files with long filenames are actually saved to F:\FileHistory\<username>\<computer name>\Data\$OF and can be
  # retrieved using the File History GUI, but you may want to avoid this.  Also there may be cases where
  # long paths and/or filenames cause errors.

#Notes: 
#  1. Filenames with Unicode characters from various languages are also often ok for File History.  
#     This script exposes these characters so they can be examined for potential problems.
#  2. Filenames with initial dots (also flagged here) are ok for File History (use cmd prompt to edit them).
#---------------------------------------------------------------------------------

import os,string,time,datetime
import sys

validChars="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ. #^=!()&,_'-+@%[]{$};'~"
disallowedChars=r'\/:*?"<>|'
# Note that many other characters are also actually allowed.  Windows expressly disallows \/:*?"<>|    

lastdirheader=''

def PrintDirHeaderIfNeeded():
    global lastdirheader
    if currdir!=lastdirheader:
        print ('===FLAGGED FILES IN DIRECTORY',currdir.encode("ascii","replace").decode()+':')
        lastdirheader = currdir
        return;

def PrintFileDates():
    fname=os.path.join(currdir,filename)
    print('      Created: ' + time.ctime(os.path.getctime(fname)) + ', Modified: ' + time.ctime(os.path.getmtime(fname)))
    return;

def IsRecent(DaysBack):
    fname=os.path.join(currdir,filename)
    if DaysBack==0: return True   # 0 disables limiting file listings based on file dates
    if ((datetime.datetime.now()-datetime.datetime.fromtimestamp(os.path.getctime(fname))).days<DaysBack) or \
       ((datetime.datetime.now()-datetime.datetime.fromtimestamp(os.path.getmtime(fname))).days<DaysBack):
        return True 
    else: return False;

for currdir,folders,filenames in os.walk(DirectoryTreeToScan):

    if len(currdir)>flagDirLen:
        print('===DIRLEN>' + str(flagDirLen) + ':', currdir.encode("ascii","replace").decode())

    if ''.join([x for x in currdir[2:].replace('\','') if x in validChars])!=currdir[2:].replace('\',''):
        print('===DIR CHARS+:',currdir.encode("ascii","namereplace").decode())

    for filename in filenames:

        if (len(currdir)+len(filename)>flagFullNameLen) and IsRecent(DaysBackToList):
            PrintDirHeaderIfNeeded()
            print('     FULLNAMELEN>' + str(flagFullNameLen) + ':', filename.encode("ascii","replace").decode())
            if PrintDates: PrintFileDates() 

        if ''.join([x for x in filename if x in validChars])!=filename and IsRecent(DaysBackToList):
            PrintDirHeaderIfNeeded()
            print('     CHARS+:',filename.encode("ascii","namereplace").decode())
            if PrintDates: PrintFileDates() 

        if filename[0:1] == "." and IsRecent(DaysBackToList):
            PrintDirHeaderIfNeeded()
            print('     INITIAL DOT:',filename.encode("ascii","replace").decode())
            if PrintDates: PrintFileDates()

        if any(True for x in filename if x in disallowedChars) and IsRecent(DaysBackToList):
            PrintDirHeaderIfNeeded()
            print('     DISALLOWED (' + disallowedChars + '):',filename.encode("ascii","replace").decode())
            if PrintDates: PrintFileDates()
    
por 10.05.2016 / 20:48