5

ホスティング プロバイダーを切り替えており、何百万ものアップロードされたファイルを新しいサーバーに転送する必要があります。すべてのファイルは同じディレクトリにあります。はい。あなたはそれを正しく読みました。;)

過去に私はこれをしました:

  1. ソース サーバーからすべてのファイルを圧縮します。
  2. scp新しいサーバーへのzip
  3. 解凍する
  4. ディレクトリを適切な場所に移動
    • なんらかの理由で、ステップ 1 の zip ファイルには常にパスが含まれており、mv する必要があります。

前回これを行ったときは、完了するまでに約 4 ~ 5 日かかりましたが、それは現在の約 60% でした。

私はより良い方法を望んでいます。何を指示してるんですか?

ファイル構造はハッシュ化されています。このようなもの:AAAAAAAAAA.jpg-ZZZZZZZZZZ.txt

これが私たちが投げかけている1つのアイデアです:

3 文字のプレフィックスに基づいて、zip を大量のミニ zip に分割します。何かのようなもの:

AAAAAAAAAA.jpg - AAAZZZZZZZ.gif => AAA.zip

理論上の長所:

  • 複数のzipを一度に転送できるようにして、転送を高速化できます
  • 失敗した転送によって失われる時間を制限できます。(転送が最終的に失敗するまで 2 日間待つのはひどいことです)

理論上の短所:

  • zip はワイルドカード ( ) を使用してファイルを検索する必要があるため、最初の zip の速度が大幅に低下する可能性がありますAAA*。おそらく、1 つだけではなくすべての CPU を使用して、一度に多くの zip スレッドを実行することで相殺されます。
  • 複雑?

rsync と scp についても検討しましたが、各ファイルを手動で転送する費用が心配です。また、リモート サーバーは空であるため、既に存在するものについて心配する必要はありません。

どう思いますか?どのようにしますか?

(はい、最終的にはこれらを Amazon S3 に移動し、ディスクを発送するだけですが、それまでの間、昨日アップする必要があります!)

4

3 に答える 3

9

実際には複数のオプションがあります。私のお気に入りはを使用することrsyncです。

rsync [dir1] [dir2]

このコマンドは実際にディレクトリを比較し、それらの間の違いのみを同期します。

これで、私は以下を使用する可能性が最も高いでしょう

rsync -z -e ssh user@example.com:/var/www/ /var/www/

-zZip-
eシェルコマンド

SFTP、SSH経由のFTPを使用することもできます。

またはwget

wget -rc ssh://user@example.com:/var/www/
于 2012-11-04T05:07:04.103 に答える
1

私は Linux/Unix の世界から来ました。tarを使用して、それぞれ設定されたサイズの多数の tar ファイルを作成します。例えば:

tar -cML $MAXIMUM_FILE_SIZE_IN_KILOBYTES --file=${FILENAME}}_{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9}.tar  ${THE_FILES}

.txt ファイルが巨大でない限り、再圧縮はスキップします。.jpeg ファイルを再圧縮してもあまり効果がなく、多くの CPU (および実時間) を消費します。

トラフィック シェーピングがどのように機能するかを調べます。同時接続数はいくつですか? 接続あたりの帯域幅は? 合計いくら?

scpでいくつかの興味深いものを見てきました。ホーム ネットワークをテストしたところ、scpは、マウントされた共有 smbfs ファイルシステムを介してコピーするよりもはるかに低いスループットを示しました。理由は完全にはわかりません。ただし、 scpがコピーを検証し、エラーが発生した場合に再送信を要求する場合は、これが望ましい場合があります。(インターネット経由で送信されるパケットでエラーが発生する可能性は非常に低いです。その後の何らかの検証段階がなければ、大きなデータセットでは実際の問題になります。md5 ハッシュを実行することをお勧めします...)

これが Web サーバーの場合は、いつでも wget を使用できます。それは非常に非効率に思えますが...

于 2012-11-04T13:48:35.277 に答える
0

BitTorrent の使用についてはどうですか? セットアップは簡単ではないかもしれませんが、一度セットアップすれば、思い通りに動作するはずです。BitTorrent は、大きなファイルの転送を容易にするために開発されました。ソース マシンにクライアントが 1 つと、ターゲット マシンにクライアントが 1 つ必要です。ソース マシンでメタファイルを作成します。それを目的のマシンにコピーし、BitTorrent クライアントにロードします。ソース マシンの IP を手動で入力します。ファイアウォールでブロックされていない限り、転送が開始されます。必要に応じて、最初に圧縮なし、別名 STORED 圧縮を使用してすべてのファイルを圧縮し、次に BitTorrent を使用して zip を転送することができます。

于 2012-11-04T22:05:05.363 に答える