实现虚拟文件系统时可以安全忽略的各种系统文件的列表

时间:2013-04-05 13:27:23

标签: windows performance macos file webdav

我正在开发一个WebDAV服务器,它从虚拟文件系统中的数据库中提供信息。

因此,用户可以在服务器上创建文件,并在数据库中自动创建它们。

现在,只要用户连接到服务器,某些操作系统就会立即创建自己的元数据文件/文件夹(考虑Thumbs.db,desktop.ini,.fseventsd,DS_Store,...)

这个文件使数据库变得混乱 - 并且往往也会降低性能(OSX例如在打开文件夹后会立即执行大量索引,这意味着对数据库的点击次数很多)

因此,为了表现和清洁,我正在寻找由各种操作系统创建的(元)文件/文件夹的“完整”列表 - 服务器可以“安全”这些文件/文件夹。

到目前为止我的清单:

//TODO: get rid of system files
/*
 *** everywhere
 * Thumbs.db
 * desktop.ini
 * .DS_Store
 * .desktop
 * AlbumArt*.jpg
 * Folder.jpg
 * ._[ParentFoldername]   // e.g. /foo/bar/._bar
 * ._[ExistingFoldername] // e.g. /foo/._bar
 * ._[ExistingFilename]   // e.g. /foo/bar/._baz (baz is a legit file inside bar)
 * ._.                    // ?!? 
 *** root only
 * System Volume Information
 * .fseventsd
 * $recycling.bin
 * $Recycle.Bin
 * Recycled
 * .Trashes
 * hiberfil.sys
 * pagefile.sys
 * .hidden
 * mach_kernel
 * Backups.backupdb
 * Contents
 *
 *** special
 * .metadata_never_index // fake this file in root
 *                       // (should keep OSX from indexing)
 */

我现有的OSX测试结构是:

/MarioDemo/
/FrankTest/
/TestItemRelation/

/.metadata_never_index

/MarioDemo/Alphabetical/
/MarioDemo/Hierarchical/

此处打开/ MarioDemo /:

时OSX请求的文件

propfinds from OSX

1 个答案:

答案 0 :(得分:4)

我猜你的清单已经很完整了。除非您特别想要过滤掉特定的文件类型,否则我只会添加以下内容:

.DS_Store?
._*
.Spotlight-V100
.DocumentRevisions-V100
.fseventsd
.MobileBackups
Icon?
__MACOSX
ehthumbs.db
desktop.ini
*.desktop
*.bak
.*~
*~

我从名为Ignoramus的项目中获取了这些内容。带有模式的相关文件是here,采用emacs格式。完全匹配的列表打印在下面,这是我从以下地方获取的:

"$RECYCLE.BIN"                         ; ms-windows
".AppleDouble"                         ; OS X
".DS_Store"                            ; OS X
".DocumentRevisions-V100"              ; OS X
".LSOverride"                          ; OS X
".Rhistory"                            ; R
".Spotlight-V100"                      ; OS X
".TemporaryItems"                      ; OS X
".Trashes"                             ; OS X
".actionScriptProperties"              ; actionscript
".apt_generated"                       ; gwt
".build"                               ; perl
".buildpath"                           ; eclipse
".builds"                              ; visualstudio
".bzr"                                 ; bazaar
".cdv"                                 ; codeville
".classpath"                           ; eclipse
".com.apple.timemachine.donotpresent"  ; OS X
".com.apple.timemachine.supported"     ; OS X
".coverage"                            ; python
".cproject"                            ; eclipse
".directory"                           ; KDE
".dropbox"                             ; dropbox
".dropbox.cache"                       ; dropbox
".emacs.desktop"                       ; emacs desktop.el
".emacs.desktop.lock"                  ; emacs desktop.el
".eunit"                               ; erlang
".externalToolBuilders"                ; eclipse
".flexProperties"                      ; actionscript
".fseventsd"                           ; OS X
".git"                                 ; git
".hg"                                  ; mercurial
".idea"                                ; various
".ido.last"                            ; emacs ido-mode
".last_cover_stats"                    ; perl
".lein-deps-sum"                       ; leiningen
".loadpath"                            ; eclipse
".netrwhist"                           ; vim
".org-id-locations"                    ; emacs org-mode
".pc"                                  ; quilt
".project"                             ; eclipse
".projectile"                          ; emacs projectile
".recentf"                             ; emacs recentf
".redcar"                              ; redcar
".rspec"                               ; rails
".sass-cache"                          ; sass
".scala_dependencies"                  ; scala
".svn"                                 ; subversion
".tox"                                 ; python
".wmncach.el"                          ; emacs WoMan
".yardoc"                              ; yard
"_MTN"                                 ; monotone
"__history"                            ; delphi
"_build"                               ; perl
"_cgo_defun.c"                         ; go
"_cgo_gotypes.go"                      ; go
"_darcs"                               ; darcs
"_obj"                                 ; go
"_sgbak"                               ; vault
"_site"                                ; jekyll
"_test"                                ; go
"_testmain.go"                         ; go
"_yardoc"                              ; yard
"aclocal.m4"                           ; automake
"auto-save-list"                       ; emacs
"autom4te.cache"                       ; autoconf
"bin-debug"                            ; various
"bin-release"                          ; various
"blib"                                 ; perl
"build"                                ; various
"Build"                                ; various
"Build.bat"                            ; perl
"COMMIT_EDITMSG"                       ; git
"cmake_install.cmake"                  ; cmake
"CMakeCache.txt"                       ; cmake
"CMakeFiles"                           ; cmake
"cover_db"                             ; perl
"cscope.csd"                           ; cscope
"cscope.files"                         ; cscope
"cscope.inc"                           ; cscope
"cscope.lst"                           ; cscope
"cscope.out"                           ; cscope
"cscope.out.po"                        ; cscope
"cscope.tmplist"                       ; cscope
"CVS"                                  ; CVS
"Debug"                                ; various
"debug"                                ; various
"depcomp"                              ; automake
"DerivedData"                          ; xcode
"Desktop.ini"                          ; ms-windows
"ehthumbs.db"                          ; ms-windows
"git-rebase-todo"                      ; git
"gwt-unitCache"                        ; gwt
"gwt_bree"                             ; gwt
"install-sh"                           ; automake
"install_manifest.txt"                 ; cmake
"InstalledFiles"                       ; ruby
"Makefile.in"                          ; automake
"MCVS"                                 ; meta-CVS
"META.yml"                             ; perl
"MERGE_MSG"                            ; git
"minimal-session-saver-data.el"        ; emacs minimal-session-saver
"MYMETA.yml"                           ; perl
"nbbuild"                              ; netbeans
"nbdist"                               ; netbeans
"nosetests.xml"                        ; python
"pm_to_blib"                           ; perl
"Profile"                              ; various
"profile"                              ; various
"RCS"                                  ; RCS
"Release"                              ; various
"release"                              ; various
"SCCS"                                 ; SCCS
"Session.vim"                          ; vim
"slprj"                                ; matlab
"SQUASH_MSG"                           ; git
"TAGS"                                 ; ctags/etags
"tags"                                 ; ctags/etags
"TestResult"                           ; visualstudio
"testresult"                           ; visualstudio
"Thumbs.db"                            ; ms-windows
"tmtags"                               ; textmate
"xcuserdata"                           ; xcode
"xhtml-loader.rnc"                     ; emacs nxhtml
"{arch}"                               ; arch - todo is this correct?
"~.dep"                                ; xcode
"~.dot"                                ; xcode
"~.nib"                                ; xcode
"~.plst"                               ; xcode
"test.out"                             ; generic testing
"test_out"                             ; generic testing
"test.output"                          ; generic testing
"test_output"                          ; generic testing