現在 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 ですが、同期されたパス内のファイルは表示されません。

ドロップボックスを停止し、デバッガーで再実行しても、何が転送されているかはわかりません。デーモンを停止して起動すると、インデックスが再作成され、同期が再開されます。これにより、転送されるファイルのセットが変わる可能性があります。

助言がありますか?

答え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 すべてのファイルまたは現在のディレクトリの下で 実行されます。

中括弧は、シェル スクリプトの句読点として解釈されないように、一重引用符で囲まれていることに注意してください。セミコロンも同様にバックスラッシュを使用して保護されていますが、この場合も一重引用符を使用できます。

詳細はこちら男が見つけたページ

  • 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十分です。

最初の編集- dropboxd (デーモン) と dropbox.py に関する Paul のコメントにより再編集。

これは、何が転送されているかを確認する最も可能性の高い方法です。

保留中のタスクが完了したら、自分でデバッグしてみます。

詳細は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`
    
  • さらに深く知りたい場合は、デバッガたとえば、 セッションgdbstrace

    このプロセスに慣れていない場合は、たとえば、この素敵な役職UNIXstraceとについてgdb

ちょっとしたヘルプです:

次のようにトレースを開始するとstrace dropboxd(実行中の pid は 501 になります)、次の方法でトレースに接続します。

$ gdb --quiet
(gdb) attach 501
  • 他の方法がすべて失敗した場合は、他の方法で Dropbox を同期できます。

たとえば、次のような別のCLIクライアントを使用します。dbxcli

2回目の編集と4回目の編集- Dropbox が独自の秘密鍵をサポートするまでは機能しません。

Dropbox サポートからの回答:

Dropbox は独自の秘密鍵の作成をサポートしていません。

のようなネットワーク監視ツール経由でも、何が転送されているかを確認できるはずだと考えましたwireshark

DropboxクライアントはSSL/TSL(またはAES)を使用しているためDropbox のセキュリティ アーキテクチャ確認するための鍵を持っているはずです。

使用方法の詳細については、この例をwireshare確認したり、自分のケースに合わせて調整したりできます。https://wiki.wireshark.org/SSLSSL/TLS クライアント Hello トラフィックを分析するDropbox証明書をお持ちの場合は、Wiresharkにインポートして何が起こっているかを確認できます。(Dropboxのセキュリティの詳細については、Dropbox セキュリティ ホワイトペーパー

第三編集と第四編集- SSL/TSL 復号化の詳細。(Dropbox が独自の秘密キーをサポートするまでは機能しません。)

Dropbox サポートからの回答:

Dropbox は独自の秘密鍵の作成をサポートしていません。

2 番目の編集セクションでは、SSL トラフィックを Wireshark で表示できると提案しました。Paul は、私が実際に をハッキングすることを提案していると考えましたがDH key exchange、これは現在の知識では不可能なので、修正したいと思います。

私が言いたいのは、もしあなたがドロップボックスビジネスRSARSA 認証を使用する場合は、dropboxd with RSA key(デーモン dropboxd はクローズド ソースなので、ソース コードを確認して機能があるかどうかを確認することはできません。おそらく最善の解決策は、dropbox.com に直接問い合わせることです) の使用を試みることができます。

それが可能な場合はRSA keyワイヤーシャーク現在転送されている内容を確認します。

関連情報