クラウドバックアップについて:Rackspace CloudFilesの使用



氷のような冬の季節になると、いつものようにはんだごてを持って来てくれました。



タスク:Rackspaceにフルスタッフィングのサーバーがあります。 ネオンサーバーでは、 データベースは MS SQL Web Edition上回転しています。 そして、男たちは突然気付きました-そして、毎晩のバックアップをどこに置きますか? そして、彼はすべての合理的な制限を超え始め、それを同じインスタンスのディスクに保存することの利点-少し。



ジョークからの賢明なフクロウのように、私は彼らがコンソールからクラウドツールをセットアップすることを提案しました。 そして、彼は熱く鋭いオブジェクトで残酷に突かれました-そこにあるサーバーは古いだけでなく、非常に古く、利用可能なものは何もなく、クラウドファイルだけがある古代の飛行機にそこにぶら下がっていることがわかります。 そして変化-市場で200年の尊敬されるオフィスの大ボスに行く必要があります。 そして、そのようなことのために彼に行くためではなく、大ボスは給料を支払います。







私はひどく驚いて、膝にスクリプトを彫るのはなぜ難しいのですか?と尋ねました。 データベースがダンプされた直後に実行しますか?



彼らは再び、死んだ大統領の緑色の画像を使用して、彼らに尊敬されるオフィスを持っていること、彼らは200歳であり、これを行うための台本はロイヤルではないことを私に説明しました。 そして、非常に深刻な理由でそれらと交差するものがたくさんあるので、私は助けなければなりませんでした。



あなたは決して知らない、突然他の誰かが役に立つだろうので、これらのスクリプトについてもっとお話ししましょう。



準備する







マニュアルを調べると、クラウドを使用するにはCurlをインストールするだけでよいことがわかります。 しかし、私たちはそれらを信じず、MinGWに付属するすべてのMSYSを配置します。



ログインファイルに入力します。



<?xml version="1.0" encoding="UTF-8"?> <credentials xmlns="http://docs.rackspacecloud.com/auth/api/v1.1" username="LOGIN" key="RS API KEY"/>
      
      







このファイルをrexpaceにフィードして、トークンを取得します。 このようなトークンがなければ、これ以上先に進むことはできません。



また、スリルのために、敵が推測しないようにdos batファイルを作成します。 実際、もっと複雑なものを発明するのは意味がなく、それらはすべて5行で出てきます。 それぞれの構造はこんな感じ



 @echo off setlocal set PATH="%PATH%;C:\MinGW\msys\1.0\bin ... endlocal
      
      





したがって、私は彼女を一度連れてきます。



ログイン





24時間有効なトークンは、次のようになります。



 curl -k -X POST -d @mylogin.xml -H "Content-Type: application/xml" -H "Accept: application/xml" https://auth.api.rackspacecloud.com/v1.1/auth > auth-token.xml cat auth-token.xml | sed -e 's/.*token id=.//' | sed -e 's/..expires=.*//g' > token
      
      







スタイルの深刻な混合物-しかし、最初のスクリプト、login.batがあります。 そして-その仕事の結果としてのトークン。 トークンは将来このように使用できます



 set /p TOKEN=<token
      
      







バックアップ用のコンテナを作成する





次に、バックアップの保存場所と保存方法を決定する必要があります。 スキームは異なる可能性があり、非常に複雑ですが、最も単純なケースを取り上げます。 通常の差分バックアップがあり、1日に1回特定の場所にアップロードするだけで十分だと想像してください。



 set /p TOKEN=<token curl -k -X PUT -H "X-Auth-Token: %TOKEN%" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup
      
      





そして、この場所を定義しました。コンテナはBackupと呼ばれます。 彼らの名前は味わうことです。



塗りつぶし-最初の試行







次に、何かを入力してみます。



 set /p TOKEN=<token curl -# -k -X PUT -T %1 -H "Content-Type: application/octet-stream" -H "X-Auth-Token: %TOKEN%" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/%1
      
      





そして、そこには何がありますか?





少し脱線しましょう。これから見るように、何がありますか?



 set /p TOKEN=<token curl -# -k -H "X-Auth-Token: %TOKEN%" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/%1
      
      







開始後、コンテナ内にあるもののリストが表示されます。たとえば、次のようになります



 4.0.327-RC1.rar 5.0.709-RELENG-spfix.rar 5.5.907-spfix.rar foo.bak
      
      





彼らが最後のステップで何とか記入したのは論理的です。



戻るダウンロード





これは一般的に明らかです-トークンを含むURLです。



 set /p TOKEN=<token curl -# -o %1 -k -H "X-Auth-Token: %TOKEN%" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/%1
      
      





パラメータとともにファイル名を渡します-動作します!..



そして今-せむし!





これが唯一のものであれば、私は投稿を書きません。



これを本番環境に実装します。つまり、スクリプトをサーバーにコピーします 投稿リクエストのサイズを超えました。 これは論理的です-テストでは、小さなファイルをアップロードしましたが、データベースダンプは50ギガバイトを超えています。



大きなファイルの入力-試行2





これは、データベースダンプ全体を埋めることができないという意味ですか?



はい、いいえ。



1つのリクエストでそれを埋めることはできません。それは事実です。 しかし、50ギガバイト以上のサーバーで1つのファイルを取得できます。 パーツを入力し、これらのパーツを1つのファイルに結合できます。



このために、フラグメント全体を提供し、その後、詳細に分析します。



非表示のテキスト
 set /p TOKEN=<token split -d --bytes=500m %1 %1.parts. ls %1.parts.* | awk 'BEGIN{x=0; print "@echo off"; }{ ++x; print "echo Uploading part " x "...\ncurl -# -k -X PUT -T " $1 " -H \"Content-Type: application/octet-stream\" -H \"X-Auth-Token: TOKEN\" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/FNN/" x " --data-binary \'" x "\'" }' | sed -es/FNN/%1/g | sed -es/TOKEN/%TOKEN%/g > _1.bat echo curl -# -k -X PUT -H "X-Auth-Token: TOKEN" -H "X-Object-Manifest: Backup/%1/" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/%1 --data-binary '' | sed -es/TOKEN/%TOKEN%/g >> _1.bat call _1.bat echo Clearing... rm -f _1.bat %1.parts.*
      
      









そのため、最初に大きなファイルを分割する必要があります。



 split -d --bytes=500m %1 %1.parts.
      
      







その後、困難な形式でのコード作成に対処します。つまり、スクリプトから2つ目のスクリプトを作成し、すべての作業を実行します。





 ls %1.parts.* | awk 'BEGIN{x=0; print "@echo off"; }{ ++x; print "echo Uploading part " x "...\ncurl -# -k -X PUT -T " $1 " -H \"Content-Type: application/octet-stream\" -H \"X-Auth-Token: TOKEN\" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/FNN/" x " --data-binary \'" x "\'" }' | sed -es/FNN/%1/g | sed -es/TOKEN/%TOKEN%/g > _1.bat
      
      







簡単なトリックls%1.parts。 awk 、私たちはすべてのピースに対してチームを獲得します。 このように



非表示のテキスト
 curl -# -k -X PUT -T foo.parts.0 -H "Content-Type: application/octet-stream" -H "X-Auth-Token: %TOKEN%" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/foo.0 --data-binary 0 curl -# -k -X PUT -T foo.parts.1 -H "Content-Type: application/octet-stream" -H "X-Auth-Token: %TOKEN%" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/foo.1 --data-binary 1 curl -# -k -X PUT -T foo.parts.2 -H "Content-Type: application/octet-stream" -H "X-Auth-Token: %TOKEN%" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/foo.2 --data-binary 2 ...
      
      







fooは、com文字列で渡されたファイルの名前です。



最後の仕上げがありました。すべて一緒に貼り付けてください。



 echo curl -# -k -X PUT -H "X-Auth-Token: TOKEN" -H "X-Object-Manifest: Backup/%1/" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/%1 --data-binary '' | sed -es/TOKEN/%TOKEN%/g >> _1.bat
      
      





新たに生成されたバッチファイルでは、これが最後の行になります。

 curl -# -k -X PUT -H "X-Auth-Token: %TOKEN%" -H "X-Object-Manifest: Backup/foo/" https://storage101.dfw1.clouddrive.com/v1/MossoCloudFS_d3125ab9-8601-45ba-a432-edf3728673bb/Backup/%1 --data-binary
      
      





利益! 大きなファイルをクラウドにアップロードし、そこから取り出す方法を学びました。



ヒンドゥー教のコードのこのスレッドが誰かに役立つことを願っています。



All Articles