是否可以看到 dropboxd 现在正在同步什么?

是否可以看到 dropboxd 现在正在同步什么?

Linux 上 dropboxd 的 dropbox.py 脚本将提供当前状态:

$ dropbox.py status 
Syncing (2,656 files remaining)
Uploading 2,656 files...  

或者特定文件或当前文件夹的状态:

$ dropbox.py filestatus 
Camera Uploads:     up to date 
Customer Shares:    syncing

但是有没有办法查看现在正在传输的文件是什么?

我之所以问这个问题,是因为 Dropbox 已经卡住了好几天,无法同步,但没有任何进展。我怀疑它卡在了某个异常大或损坏的文件上,如果我能识别它,我就可以删除/忽略它。

笔记

$ ls -l /proc/7857/fd

其中 7857 是 dropbox 的 pid,同步路径中没有显示任何文件。

请注意,要求停止 dropboxd 并使用调试器重新执行不会显示正在传输的内容现在。停止并启动守护进程会导致重新索引并重新开始同步。这可能会导致传输一组不同的文件。

有什么建议么?

答案1

如果你使用的是 Linux,那么这很容易。在同步过程中,你可以执行以下操作:

find $HOME/dropbox_sync_dir -type f -exec dropbox.py file status -a '{}' \; | grep 'syncing'

解释细节:

  • find <path> -type f -exec dropbox.py ... '{}' \;

dropbox.py 在每个文件上或当前目录下 运行。

请注意,括号括在单引号中,以防止它们被解释为 shell 脚本标点符号。分号也同样使用反斜杠进行保护,尽管在这种情况下也可以使用单引号。

更多关于男人找到页面

  • dropbox.py file status -a来自dropbox Linux 客户端手册

    dropbox file status  [-l] [-a] [FILE]…
    
    Prints the current status of each FILE.
    
      Options:
    
       -l or --list prints out information in a format similar to the native Linux command ls.
       -a or --all do not ignore entries starting with "."
    

    别名包括 stat。

  • | grep 'syncing'

搜索“同步”字符串。

注意:.py 结尾不是强制性的,应该有一个别名,所以只写就dropbox足够了。

第一次编辑- 根据 Paul 关于 dropboxd(守护进程)与 dropbox.py 的评论重新编辑。

这仍然是查明正在传输什么内容的最可能的方法。

当我完成未完成的任务时,我会尝试自己调试它。

应该通过(python 调试器)dropbox.py进行调试,更多信息请见pdbpython 调试器

最后,在保罗的评论之后,我明白了问题的核心在哪里。他想看到当前访问的文件甚至更好被转移的通过 dropbox 同步客户端。

  • 您可以找到当前使用的 dropbox 客户端使用的所有文件:

    ls -thal /proc/`pgrep dropbox`/fd | egrep -v 'socket:|pipe:|anon_inode|/dev/'
    
  • 如果你什么都看不到,那就意味着客户端可能有问题。我建议执行斯特拉斯

    To monitor your dropboxd script with output save into output.txt file:
    `strace -o output.txt dropboxd`
    
    To monitor only system calls you could enter:
    `strace -e open dropboxd`
    
  • 如果你想更深入地了解,你可以附加一个调试器例如 gdb您的strace会话。

    如果你不熟悉这个过程,你可以检查一下,例如,这个不错的邮政关于 unixstracegdb

只是一个快速帮助:

当您使用以下命令开始跟踪时:(strace dropboxd运行 pid 为 501)然后您按以下方式附加到它:

$ gdb --quiet
(gdb) attach 501
  • 如果其他所有方法都失败了,您可以使用其他方式同步您的 Dropbox:

例如,使用不同的 CLI 客户端,如命令行工具

第二次编辑和第四次编辑- 直到 dropbox 支持自己的私钥时才起作用。

Dropbox 支持人员的回答:

Dropbox 不支持创建您自己的私钥。

我突然想到,甚至可以通过像这样的网络监控工具来检查传输的内容wireshark

由于 Dropbox 客户端使用 SSL/TSL(或 AES)Dropbox 安全架构你应该有钥匙可以检查。

有关如何使用的详细信息,wireshare您可以查看https://wiki.wireshark.org/SSL或调整此示例以适合您的情况分析 SSL/TLS 客户端 Hello 流量。如果您有 Dropbox 证书,您可以将其导入 wireshark 以查看发生了什么。(有关 Dropbox 安全详细信息,您可以查看Dropbox 安全白皮书

第三次编辑和第四次编辑- 有关 SSL/TSL 解密的详细信息。(直到 Dropbox 支持自己的私钥时才起作用。)

Dropbox 支持人员的回答:

Dropbox 不支持创建您自己的私钥。

在第二个编辑部分,我建议你可以通过 wireshark 查看 SSL 流量。由于 Paul 认为我建议你实际上应该破解DH key exchange,而就目前的知识而言这是不可能的,所以我想纠正它。

我想建议的是,如果你使用Dropbox 业务 RSA和 RSA 身份验证,您可以尝试使用dropboxd with RSA key(守护进程 dropboxd 是闭源的,我无法检查源代码是否存在该功能,可能最好的解决方案是直接询问 dropbox.com)。

如果可能的话,才RSA key导入wireshark查看当前正在传输的内容。

相关内容