2

При попытке запустить инструмент истории файлов в Windows 8 он работает около 2 секунд, а затем останавливается. Файлы не будут скопированы на выбранный диск.

В средстве просмотра событий появляется единственная ошибка:

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

Я попытался удалить как файлы конфигурации, так и каталог FileHistory на целевом диске. Повторная настройка истории файлов приводит к той же ошибке.

Есть ли лучший способ отследить причину сбоя? Или каким-то образом получить инструмент «История файлов» для создания более подробного файла журнала, в котором показано, что является причиной проблемы?

2 ответа2

0

Я адаптировал скрипт, опубликованный Apple16 выше, для запуска в Python 3 и немного его улучшил. Используя комбинацию выборочного исключения папок из истории файлов и этого сценария для просмотра возможных проблем, я сузил свою проблему до двух файлов с почти одинаковыми именами в одном каталоге. Оба файла имели слово Espanol в имени файла с тильдой над n. Однако у одного была кодировка: Espan\N {COMBINING TILDE} ol, а у другого - Espa\N {LATIN SMALL LETTER N WITH TILDE} ol. Оба имени файла одинаково перечислены в Проводнике Windows с тильдой над n. Когда я помещаю эти два файла в отдельные папки, они прекрасно сохраняются в истории файлов, но, находясь в одном и том же каталоге, они, похоже, мешают друг другу и блокируют работу истории файлов.

Вот скрипт CheckFileNames.py, который я использовал:

#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()
0

Вот что я сделал. Я не уверен, что все эти шаги необходимы, но я просто хотел быть уверен.

1.

Control panel -> File history -> Advanced Settings -> Open file history event logs и исправить / удалить все файлы, которые портят историю файлов. Для меня в этой папке была куча:

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

И я их удалил. Они не выглядели важными.

2 Я написал быстрый скрипт на python, чтобы найти любые файлы с не-ascii символами в их именах. Я вручную переименовал все это. Это может быть причиной того, что история файлов не работает на некоторых музыкальных папках!

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)

РЕДАКТИРОВАТЬ: не удаляйте файлы Autodesk Inventor, это повредит Autodesk. о_О

3.

История файлов -> выберите диск -> (выберите диск) -> (выберите свою последнюю резервную копию) -> история файлов выдает предупреждение о том, что ваши последние резервные копии не находятся на этом диске. Я нажал ОК.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .