0

次のコマンドを使用して、コンテナー内のすべてのオブジェクトを一覧表示し、ログ ファイルにダンプしています。

swift -A url -U username -K password list container_name> log.txt

出力ログ ファイルの行数を確認したところ、カウント 1076857が表示されました。しかし、クラウドを手動でチェックしたところ、1081756を示しているカウントが見つかりました。この不一致の理由は何でしょうか? 上記のコマンドは空のフォルダーを除外しますか?

提案してください。

4

1 に答える 1

2

大きなファイル (5 GB を超える) は、セグメントと呼ばれる部分的に (?) Swift に保存されます。

例:サイズが13 GBで名前がlog.txt
のファイルがあるとします。 それをコンテナcontainer1にアップロードします。

これがシナリオであり、Swift は次のことを行います。

  1. Swift はこのファイルを受け取り、次のセグメントに分割します。

     log.txt_segment1 ---> size 5GB   
     log.txt_segment2 ---> size 5GB   
     log.txt_segment3 ---> size 3GB
    
  2. Swift は、サイズが 0MBlog.txtの名前のオブジェクトを作成します。実際には、これは実際のオブジェクトではなく、単なるエイリアス名です。 container1
  3. 次に、Swift はcontainer1_segmentsの実際のオブジェクト (セグメント化されたオブジェクト) を格納する名前の別のコンテナーを作成しますcontainer1
  4. 次に、Swift は log.txt のセグメントを にアップロードしcontainer1_segmentsます。

それで、私たちは今何を持っていますか?
- 2 つのコンテナーがあります[ container1container1_segments]
- 4 つのオブジェクトがあります[ log.txtlog.txt_segment1、] log.txt_segment2log.txt_segment3

理論的
は、1 つのコンテナと 1 つのオブジェクトが必要ですが、代わりに2 つのコンテナと 4 つのオブジェクトがあります。これにより、Swift のオブジェクト数の不一致が発生する可能性があります。

于 2016-01-08T20:28:03.213 に答える