从 Dropbox 中的非 Mac OS 文件系统中删除 ._ 文件

从 Dropbox 中的非 Mac OS 文件系统中删除 ._ 文件

由于我的 Macbook 空间有限,我购买了一个便携式 SSD 驱动器来保存我的大文件和 Dropbox 文件夹。这在大多数情况下都有效,但是我注意到,当我迁移到这个便携式 SSD 上的文件系统时,我现在拥有数千个 ._ 文件,本质上是 1 对 1 ._ 与真实文件/文件夹。因此,如果我之前有 picture.jpg,我现在还额外拥有 ._picture.jpg 0 字节文件。

经过一番研究,我发现这与 Mac 使用非 Mac 日志文件系统并创建这些文件有关,现在我忘记了原因。

于是我开始逐个文件夹删除这些文件,但这将花费很长时间。我有大量的网站模板、备份、网站……实际上有数千个小文件,现在都有这些讨厌的 ._ 阴影。

所以我不得不想办法删除所有这些文件。我的解决方案列在下面的答案中,这是我在 Dropbox 社区页面上提供的。但我想把这个项目放在这里,看看是否有人有更好的方法来完成这项任务。

答案1

我解决这个问题的方法是,首先将我的 Dropbox 完整复制到另一个驱动器上。这可能是一个耗时的过程,至少对我来说是这样,因为我保存了这么多咨询客户的网站、备份等,这导致了数千个小文件。加上所有 ._ 文件后,文件数量翻倍了。我的文件数量在 300,000 以上。但是,备份后,我们就可以继续了。

记住,此计划假设您仅使用 Mac 上的可移动驱动器。如果您需要在文件系统之间共享,我怀疑这是否可行。我只是使用 Dropbox 应用程序本身在其他设备上管理它,而不需要包罗万象的文件系统。

  1. 如果 Dropbox 应用程序正在运行,请关闭它。
  2. 将您的 Dropbox 备份到另一个驱动器(可能很耗时),并将包含可怕的 ._ 文件。
  3. 为了完整性,请确认您的备份,也许使用文件夹比较实用程序/应用程序。
  4. 将可移动驱动器格式化为 Mac 日志文件系统。我使用的是三星便携式 SSD T3 1TB,格式化为 Mac OS Extened(日志式、加密)的安全分区。
  5. 新卷准备好后,请在 Finder 中打开它。
  6. 将备份复制到 Dropbox 文件夹
  7. 打开终端。
  8. 将目录更改为新卷的 Dropbox 文件夹,我的是 PSSSD/Dropbox,因此命令是:

    cd /Volumes/PSSSD/Dropbox

  9. 由于对批量删除的操作感到紧张,我想得到一个“WhatIf”(powershell 参考),所以我们只进行查找而不删除。我的列表很大,所以我将其转储到一个文件中。下面的第一个命令输出到终端,第二个命令输出到文件。

    find . -name '._*' find . -name '._*' > ~/Desktop/DropBox_filestodelete.txt

  10. 查看列表。我的“.dropboxcache”文件夹中有很多东西,我不确定是否应该无论删除与否,但由于担心缓存会在需要时重新生成,我决定继续将其删除。
  11. 以下命令将查找以 ._ 开头的所有内容。请注意,如果您有真正重要的文件具有相同的模式,它们将被删除,您需要从备份中复制它们才能恢复。“rm -fv”是删除找到的文件。-fv 中的 f 表示删除而不提示(危险的),-fv 中的 v 表示详细,因为我想记录所有我删除的文件以供参考。

    find . -name '._*' -exec rm -fv {} \; >> ~/Desktop/filesdeletedoutput.txt

  12. 此删除命令可能需要一些时间。实际上,我用 CTRL-C 停止了两次,但在查看日志文件后,发现它仍在运行,我只是耐心等待。
  13. 如果您还没有意识到,日志文件应该在您的桌面上。
    现在启动 Dropbox 应用程序备份。
  14. 如果您对格式化的卷和文件夹使用与之前的 Dropbox 文件夹相同的名称,Dropbox 可能会开始“同步”和“索引”。

这需要一些时间。我曾经在移动 Dropbox 文件夹时遇到过问题,它不允许我选择其中已有 Dropbox 文件夹的文件夹,但不知何故,我能够通过取消其中一个警告/提示并进入 Dropbox 的“设置/首选项”来解决这个问题。

您最终应该可以让 Dropbox 恢复正常,而不再有那些令人厌烦的 ._ 文件。 我再次警告您使用 rm -fv 或 rm-rf 时,因为它会在没有警告的情况下删除,并且我相信会绕过垃圾箱或回收站。

答案2

macOS 操作系统包含该dot_clean命令,可解决您问题中描述的问题。下面给出了 macOS 10.13.3 (High Sierra) 的手册页。

DOT_CLEAN(1)              BSD General Commands Manual             DOT_CLEAN(1)

NAME
     dot_clean -- Merge ._* files with corresponding native files.

SYNOPSIS
     dot_clean [-fmnsv] [--keep=[mostrecent|dotbar|native]] [dir ...]

DESCRIPTION
     For each dir, dot_clean recursively merges all ._* files with their cor-
     responding native files according to the rules specified with the given
     arguments.  By default, if there is an attribute on the native file that
     is also present in the ._ file, the most recent attribute will be used.

     If no operands are given, a usage message is output.  If more than one
     directory is given, directories are merged in the order in which they are
     specified.

OPTIONS
     -f      Flat merge.  Do not recursively merge all directories in the
             given dir.  This is off by default.

     -h      Help. Prints verbose usage message.

     -m      Always delete dot underbar files.

     -n      Delete dot underbar file if there is no matching native file.

     -s      Follow symbolic links.  This will follow symbolic dot underbar
             files when they are found.

     -v      Print verbose output.

     --keep=mostrecent
             The default option.  If an attribute is associated with a data
             fork, use that.  Otherwise, use information stored in the Apple-
             Double file.  Note that the native fork's data is preferred even
             if the data in the AppleDouble file is newer.

     --keep=dotbar
             Always use information stored in the AppleDouble file, replacing
             any extended attributes associated with the native file.

     --keep=native
             Always use the information associated with the data fork, ignor-
             ing any AppleDouble files.

EXAMPLES
     The following is how to do an dot_clean merge on the mounted volume test,
     always using the dot underbar information.

           dot_clean --keep=dotbar /Volumes/test

DIAGNOSTICS
     The dot_clean utility exits 0 on success, and >0 if an error occurs.

BUGS
     None known.

BSD                              Sept 27, 2012                             BSD

相关内容