rsync 从已挂载的卷创建数千个 .DS_Store 文件

rsync 从已挂载的卷创建数千个 .DS_Store 文件

我一直在使用同步在 OS X 上同步我们所有的网站管理员。在 OS X 10.6.3 更新之前,它运行良好!

现在它会创建数千个空 (0-kb) 文件夹。它只在同步到已安装的网络驱动器时才会这样做(我们需要这样做),因为当我同步到本地驱动器时,它会照常工作!

我尝试过排除,但似乎不起作用...还尝试了不同版本的 rsync,所以这是 OS X 问题。

echo ""
echo "~*~*~*~*~*~*~*~*~*~*~*~*~*"
echo " SYNCING up KINEMASTIK"
echo "~*~*~*~*~*~*~*~*~*~*~*~*~*"

/usr/local/bin/rsync -aNHAXv --progress --exclude-from 'exclude.txt' /Volumes/Groups/Projects/483_Modern_Activity_Website/web/youradmin/ /Users/dan/Dropbox/documents/WORK/kinemastik/WEBSITE/youradmin/  

echo ""
echo "~*~*~*~*~*~*~*~*~*~*~*~*~*"
echo " SYNCING up CHRIS BROOKS YOURADMIN"
echo "~*~*~*~*~*~*~*~*~*~*~*~*~*"

/usr/local/bin/rsync -aNHAXv --progress --exclude-from 'exclude.txt' /Volumes/Groups/Projects/483_Modern_Activity_Website/web/youradmin/ /Volumes/Groups/Projects/516_ChrisBrooks/website/youradmin/

有谁遇到过同样的问题吗?

答案1

我知道这是一个老问题,但我最近遇到了这个问题,在其他地方找到了答案(http://hintsforums.macworld.com/showthread.php?t=116751),并想与大家分享。

显然,这种情况发生是因为 rsync 尝试创建一个临时文件,在重命名文件之前将文件复制到该文件中。临时文件名的形式为“.{filename}.{some unique id}”。由于文件是“.DS_Store”,因此它会创建“..DS_Store.{some unique id}”。但 OS X 似乎无法处理以“..”开头的文件,因此 rsync 会悄悄失败并再次尝试(重复进行)。

解决方案是忽略.DS_Store 文件。

人们在删除这些 ..DS_Store.{some unique id} 文件时也遇到了麻烦。要删除它们,请运行:

find . -name '..DS_Store*' -print0 | xargs -0 rm

勘误表:

上面的删除文件命令最终对我不起作用。我不得不转到我的 Windows 计算机(通过 Airport Extreme 连接到此外部驱动器)并删除文件。我想通过 Firewire 将驱动器直接安装到我的 Mac 上可能也有效。

答案2

rsync 命令语法有问题?快速检查我的机器 (10.6.3) 上的 man 文件后发现:

   --exclude-from=FILE     read exclude patterns from FILE

答案3

我也遇到过这种情况。我还没有尝试过,但临时解决办法是排除所有不可见文件,至少根据 Apple 讨论中关于此主题的帖子。

http://discussions.apple.com/thread.jspa?threadID=2398971&tstart=60

答案4

使用的选项rsync( --exclude-from 'exclude.txt') 是正确的语法。只要满足以下条件,它就可以工作:

  1. 你的脚本知道在哪里 exclude.txt位于

  2. 的内容exclude.txt包括以下行:.DS_Store

  3. 您的--exclude-from选择在调用中被“提前”声明rsync;换句话说:

# THIS: 
/usr/local/bin/rsync --exclude-from 'exclude.txt' -aNHAXv --progress /Volumes/Groups/Projects/483_Modern_Activity_Website/web/youradmin/ /Users/dan/Dropbox/documents/WORK/kinemastik/WEBSITE/youradmin/
# NOT THIS:
/usr/local/bin/rsync -aNHAXv --progress --exclude-from 'exclude.txt' ...

.DS_Store文件是苹果的瘟疫,最近的观察表明,这种瘟疫正在变得更加严重。

相关内容