我正在运行一个Ubuntu 10.04.1 LTS服务器。 我经常从Mac使用AFP打开文件。 不可避免地,这在服务器上创build了.DS_Store文件(尽pipe由于某些原因,它们被命名为:2eDS_Store ,但是它也会在DS_Store文件上创build变体,这些变体的名称通常与该目录中的其他文件类似,例如:
~$ ls total 60K -rw-r--r-- 1 tarakhovsky 16K 2010-11-30 18:28 :2eDS_Store drwx--S--- 4 tarakhovsky 4.0K 2010-11-08 13:58 :2eTemporaryItems/ lrwxrwxrwx 1 tarakhovsky 15 2010-10-19 17:44 bigdisk -> /media/bigdisk// ... drwxr-xr-x 3 tarakhovsky 4.0K 2010-11-03 18:24 Temporary Items/ drwxr-xr-x 3 tarakhovsky 4.0K 2010-11-30 01:34 tmp/ ...
我已经禁止使用DS_Store文件创build:
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
所以希望这不会继续发生 – 但我真的想摆脱已经在服务器上的DS_Store文件的所有现有变种。 任何想法,为什么这些变种正在创造,以及如何我可以摆脱他们呢?
2e前缀似乎是netatalk服务的默认设置不允许点文件的副作用; 为了避免这种情况(即将文件名称作为.DS_Store等出现在服务器上),在/etc/netatalk/AppleVolumes.default中添加options:usedots每个共享的options:usedots (参见前面的问题和netatalk文档 )。
这不会摆脱现有的“:2e”文件或防止新的“。” 文件被创build,只是让新文件得到创build名称(并使其正确无形)。 你已经完成的DSDontWriteNetworkStores设置应该防止创build新的.DS_Store文件,但是不会阻止.TemporaryItems,.Trashes,._ *文件(这些是AppleDouble文件,包含资源分叉和非标准元数据)等。不知道有什么方法可以防止这些被创造,你只能在之后清理它们(并且希望它们没有任何重要的东西 – 这并不总是一个安全的假设)。
我发现Christian Imhorst的脚本删除了服务器上的这些文件。 在他的网站上的字符编码有点乱码,所以我会在这里包括一个清理(稍微修改)的版本。 我已经添加了一些文件名列表删除; 随时编辑杀人名单品尝。 但是请确保您在运行之前有一个备份,因为任何包含字符“rm -rf”的脚本都应该被认为是有潜在危险的。
#!/bin/bash # Script: sauber # Object: Cleans up your Linux file system after a # session with AppleTalk and Finder. # Etymologie: sauber means clean in German # Author: originally by Christian Imhorst [http://www.datenteiler.de/what-is-2eds_store/] # modified by Gordon Davisson # Test number of arguments here if (( $# < 1 )) ; then echo >&2 echo "We need an argument here." >&2 echo "Usage: ./sauber [Directory]" >&2 echo "Example: ./sauber /home/christian" >&2 echo >&2 exit 1 elif [[ ! -d "$1" ]] ; then echo "$1 is not a directory" >&2 exit 1 fi find "$1" \( -iname ':2eDS_Store' \ -o -iname '.DS_Store' \ -o -iname '.AppleDouble' \ -o -iname 'Network Trash Folder' \ -o -iname 'Temporary Items' \ -o -iname ':2eTemporary Items' \ -o -iname '.Temporary Items' \ -o -iname ':2elocalized' \ -o -iname '.localized' \ -o -iname ':2e_*' \ -o -iname '._*' \) -exec rm -rf {} \;
我知道这是一个非常古老的问题 – 但升级到狮子后,我得到了这个问题。 我刚刚安装了BlueHarvest ,似乎解决了我的问题。 它删除我的Linux服务器上不需要的文件。
这里只是一个猜测,但0x2e是46的hex,这是期间字符的ASCII . 。 我假设.DS_Store文件正在被重新命名,使得它们不会与Linux命名约定相冲突,即以点开头的任何内容都是隐藏文件。 至于究竟是什么机制 ,我不知道; 但这解释了“2e”。
不知道为什么他们被称为:2e_something而不是.DS_Store,但是,临时项是由Carbon应用程序(这是几个程序仍然使用的旧的MacOS 9兼容性层,即MS-Office)创build的,摆脱他们,AFAIK,但他们是安全的删除。
系统首先创build它们,因为MacOS不能通过Samba使用扩展属性,即使底层的FS会支持它们,所以它在隐藏文件中存储资源分支,文件夹标签等。
如果你还使用MacOS以外的其他系统访问文件,这是一个真正的痛苦,因为他们不知道这个配对,如果你移动,重命名或删除文件,最终会产生大量孤立的._xxx文件。
:2E可能是%2E的一个变体,它转换为a。 (期间)每http://www.w3schools.com/tags/ref_urlencode.asp
我不build议删除点文件,因为它可能会导致仍然使用资源分叉的一些应用程序的问题(加上大多数将只是重新创build)。 您也可能会看到以._开头的文件,这些文件是来自Samba连接的文件的资源分支。 我们在我们的一些服务器上有这些文件,最后我们认为由于数据可能丢失,每天晚上都不值得花费精力去清理它们。
您应该能够使用以下命令查找文件夹的所有变体:
find ./ -regex '/:2eDS_Store$' | xargs echo
这不会删除的文件,但你应该先检查结果,不要相信我盲目:)