![Debian 上的 Dropbox 在 NTFS 共享上出现 EAGAIN 错误](https://linux22.com/image/33313/Debian%20%E4%B8%8A%E7%9A%84%20Dropbox%20%E5%9C%A8%20NTFS%20%E5%85%B1%E4%BA%AB%E4%B8%8A%E5%87%BA%E7%8E%B0%20EAGAIN%20%E9%94%99%E8%AF%AF.png)
在 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