Debian 上的 Dropbox 在 NTFS 共享上出现 EAGAIN 错误

Debian 上的 Dropbox 在 NTFS 共享上出现 EAGAIN 错误

在 Debian 安装上使用 dropbox 时,我遇到一些奇怪的问题:

  • 我在启用测试存储库的情况下运行 Debian
  • 我从网站安装了 Dropbox
  • 我的保管箱位置位于采用 NTFS 格式的共享分区上

我使用以下行将 dropbox-location 安装在我的 fstab 中:

UUID=662058B320588C45 /media/ntfs-data ntfs-3g uid=1000,gid=users 0 0

这为我提供了驱动器的读/写权限 - 只要我使用文件管理器或控制台(或任何其他程序)来访问它就可以工作的驱动器。

设置我的保管箱以访问该驱动器上已存在的位置后,它索引了几乎所有文件,然后停止并显示以下消息:

Downloading 38 files ...

我尝试通过附加strace到产生以下结果的进程来检查发生了什么(这只是摘录,因为消息不断出现):

recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=10, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 3, 0) = 0 (Timeout)
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=10, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 3, 496) = 0 (Timeout)
futex(0x9ee784, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 49446674, {1372094398, 476504000}, ffffffff) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x9ee804, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x9ee800, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x9ee840, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0x9ee7c0, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0x9ee784, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x9ee780, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x9ee7c0, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0x9ee784, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 49446680, {1372094398, 476765000}, ffffffff) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x9ee804, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x9ee800, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x9ee840, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0x9ee7c0, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0x9ee784, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x9ee780, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x9ee7c0, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0x9ee784, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 49446687, {1372094398, 477169000}, ffffffff) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x9ee804, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x9ee800, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x9ee7c0, FUTEX_WAKE_PRIVATE, 1)  = 0
futex(0x9ee784, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x9ee780, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x9ee7c0, FUTEX_WAKE_PRIVATE, 1)  = 1
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=10, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 3, 0) = 0 (Timeout)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=12, revents=POLLOUT}])
writev(12, [{"5\30\4\0\26\10@\1[\0@\1\17\0\17\0=\0\4\0[\0@\1\0\0\0\0\17\0\17\0"..., 96}, {NULL, 0}, {"", 0}], 3) = 96
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=10, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 3, 0) = 0 (Timeout)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=12, revents=POLLOUT}])
writev(12, [{"$\30\1\0&\10\2\0\341\0\0\0", 12}, {NULL, 0}, {"", 0}], 3) = 12
poll([{fd=12, events=POLLIN}], 1, 4294967295) = 1 ([{fd=12, revents=POLLIN}])
recvfrom(12, "\1\1;U\0\0\0\0\341\0\0\0\177\0\300\0\246\5S\1\246\5S\1\24\0\0\0\0\0\0\0", 4096, 0, NULL, NULL) = 32
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=12, revents=POLLOUT}])
writev(12, [{"&\30\2\0\177\0\300\0", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=12, events=POLLIN}], 1, 4294967295) = 1 ([{fd=12, revents=POLLIN}])
recvfrom(12, "\1\1<U\0\0\0\0\341\0\0\0G\0`\2\246\5S\1\246\0*\1\24\0\0\0\0\0\0\0", 4096, 0, NULL, NULL) = 32
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=12, revents=POLLOUT}])
writev(12, [{"&\30\2\0G\0`\2", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=12, events=POLLIN}], 1, 4294967295) = 1 ([{fd=12, revents=POLLIN}])
recvfrom(12, "\1\1=U\0\0\0\0\341\0\0\0N\0`\2\246\5S\1\244\0*\1\24\0\0\0\0\0\0\0", 4096, 0, NULL, NULL) = 32
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=12, revents=POLLOUT}])
writev(12, [{"&\30\2\0N\0`\2", 8}, {NULL, 0}, {"", 0}], 3) = 8
poll([{fd=12, events=POLLIN}], 1, 4294967295) = 1 ([{fd=12, revents=POLLIN}])
recvfrom(12, "\1\1>U\0\0\0\0\341\0\0\0\0\0\0\0\246\5S\1\244\0\25\1\24\0\0\0\0\0\0\0", 4096, 0, NULL, NULL) = 32
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, 4294967295) = 1 ([{fd=12, revents=POLLOUT}])
writev(12, [{"%\30\1\0", 4}, {NULL, 0}, {"", 0}], 3) = 4
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=10, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 3, 0) = 0 (Timeout)
recvfrom(12, 0x33b3ae4, 4096, 0, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=10, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}], 3, 496  C-c C-c^C <unfinished ...>
Process 5687 detached

我已经跑了ntfsck

sudo ntfsck /dev/sdb1
Unsupported: replay_log()
Unsupported: check_volume()
Checking 219648 MFT records.
Unsupported cases found.

重新启动到 Windows 并运行 chkdsk 也没有解决该错误。

有人知道这是什么/我该如何修复它?

答案1

TL;博士;

最终解决问题的方案是#4。

1. 备用 /etc/fstab 选项

我发现有几个人声称他们能够做您想做的事情,但没有看到任何提及与您类似的问题。我能发现的唯一区别是/etc/fstab他们使用的安装座。我会尝试以下操作:

UUID=662058B320588C45 /media/ntfs-data ntfs-3g defaults 0 0

如果这不起作用,我特别发现了这一点,你必须根据你的区域设置进行调整,但说实话,我不明白你为什么需要它:

UUID=662058B320588C45 /media/ntfs-data ntfs-3g defaults,locale=en_GB.UTF-8 0 0

2. $HOME/Dropbox 作为链接

这是我见过的另一种方法,他们不是直接使用 NTFS 分区中的 Dropbox 文件夹,而是使用创建的链接,$HOME/Dropbox该链接指向 NTFS 分区上的 Dropbox 文件夹。

$ ln -s /media/ntfs-data/Windows/User/<username>/Dropbox /home/<username>/Dropbox

不确定为什么这很重要,但 Dropbox 应用程序完全有可能将 NTFS 共享视为 EXT3/4 目录,因为它是通过命令创建的 Unix 链接访问它ln

3. Dropbox 最新版本?

我确认您使用的是最新版本的 Dropbox 客户端。你可以在这里找到更新版本。这发行说明在这里以及。

一般来说,我发现使用 Dropbox 的可下载版本比我的发行版存储库中包含的任何版本更好。

另外,在从命令行进行安装时,我还使用了来自非官方 Dropbox Wiki 的 Dropbox 安装说明。主题的标题是:在完全基于文本的 Linux 环境中安装 Dropbox

4.挂载选项到ntfs-3g

只需将文件和文件夹的正确掩码添加到/etc/fstab条目中(这将使 ntfs 驱动器在所有情况下都与 Linux 更加兼容):

UUID=662058B320588C45 /media/ntfs ntfs-3g id=1000,gid=1000,dmask=022,fmask=133 0 0

参考

相关内容