Chromeデータのお引っ越し

何が出来るの?

Chromeの再インストール時などに旧環境から新環境にデータを移行します。

この記事の前提とお引っ越し方針

  • Windows環境の内容です。
  • Chromeのユーザープロファイルが複数存在する場合は、パス

    %localappdata%\Google\Chrome\User Data\Default

    の代わりに、ユーザー別のパス

    %localappdata%\Google\Chrome\User Data\<profile_name>

    に読み替える必要があります。

  • 履歴やタブデータは移行します。
  • キャッシュは移行しません。
  • 拡張機能は再インストールします。不要な拡張機能を棚卸しするため移行しません。

やり方

  1. 旧環境のChromeデータをバックアップします。以下のフォルダをまるごとコピーすれば良いですが、キャッシュなども含まれているようなので事前にChromeからキャッシュをクリアしておいたほうがサイズを減らせるかもしれません。

    %localappdata%\Google\Chrome
  2. 新環境にChrome拡張機能を一通りインストールします。

    拡張機能は次のパス以下のサブフォルダ名でググるChromeウェブストアのページがヒットします。

    %localappdata%\Google\Chrome\User Data\Default\Extensions
  3. 必要なデータをリストアします。

    • 履歴

      次のフォルダ内の後述するファイルを旧環境のファイルで上書きコピーします。

      %localappdata%\Google\Chrome\User Data\Default

      コピーするファイルは以下のファイルです。

      • Current Session
      • Current Tabs
      • History
      • Last Session
      • Last Tabs
    • 拡張機能
      • Session Buddy

        次のフォルダ内のファイルを旧環境のファイルで上書きコピーします。

        %localappdata%\Google\Chrome\User Data\Default\databases\chrome-extension_edacconmaakjimmfgnblocblbcdcpbko_0

補足事項

  • ブックマークの移行方法は未調査。
  • HistoryなどのファイルはSQLiteなのでDB Browser for SQLiteなどで中身を参照できます。
  • Chromeのユーザーフォルダにある*-journal系のファイルは用途が不明。

参考

GitLab のバックアップファイルから Git リポジトリを取得する

何が出来るの?

GitLabでsudo gitlab-rake gitlab:backup:createを実行すると、既定では/var/opt/gitlab/backups[TIMESTAMP]_gitlab_backup.tarというファイル名でバックアップが作られます。このバックアップから直接Gitリポジトリを取得します。

やり方

コマンドだけ並べると次のとおりです。

$ ls -lh
合計 100K
-rwxr-xr-x 1 takuyais takuyais 100K 1021 22:59 1445435571_gitlab_backup.tar
$ mkdir 1445435571_gitlab_backup
$ tar -xvf 1445435571_gitlab_backup.tar -C 1445435571_gitlab_backup
repositories/
repositories/takuyais/
repositories/takuyais/your-awesome-project.bundle
db/
db/database.sql.gz
uploads/
backup_information.yml
$ mkdir your-awesome-project.git
$ tar -xf 1445435571_gitlab_backup/repositories/takuyais/your-awesome-project.bundle -C your-awesome-project.git/
$ ls -lh your-awesome-project.git/
合計 28K
-rw-r--r-- 1 takuyais takuyais   22 1021 22:50 HEAD
-rw-r--r-- 1 takuyais takuyais   84 1021 22:50 config
-rw-r--r-- 1 takuyais takuyais   73 1021 22:50 description
lrwxrwxrwx 1 takuyais takuyais   47 1021 22:50 hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks
drwxr-xr-x 2 takuyais takuyais 4.0K 1021 22:50 hooks.old.1445435429
drwxr-xr-x 2 takuyais takuyais 4.0K 1021 22:50 info
drwxr-xr-x 7 takuyais takuyais 4.0K 1021 22:50 objects
drwxr-xr-x 4 takuyais takuyais 4.0K 1021 22:50 refs
$ git clone your-awesome-project.git/ your-awesome-project
Cloning into 'your-awesome-project'...
done.
$ ls -lha your-awesome-project
合計 16K
drwxr-xr-x 3 takuyais takuyais 4.0K 1021 23:08 .
drwxr-xr-x 5 takuyais takuyais 4.0K 1021 23:08 ..
drwxr-xr-x 8 takuyais takuyais 4.0K 1021 23:08 .git
-rw-r--r-- 1 takuyais takuyais    4 1021 23:08 README.md

上記のコマンドでやっている事は次のとおりです。

  1. バックアップファイルのtarballを任意のディレクトリに展開します。
  2. 展開されたファイルのrepositoriesフォルダ以下にGitリポジトリのファイルがあります。目的のリポジトリrepositories/[namespace]/[project_path].bundleというファイル名のtarballになっているため、これを任意のディレクトリに展開します。
  3. 展開されたリポジトリはベアリポジトリなので、任意のディレクトリにクローンします。

ポイントは、バックアップされたリポジトリのファイルは拡張子.bundleですがGitのバンドルファイルではなくtarballであるという点です。(GitLabのバージョン8.0.5時点)

補足事項

トラブルしゅーたーず #05に参加

概要

トラしゅに参加して来た。この勉強会には、休日にまでわざわざトラブルシュートをしに来るMが集まる。

今回はWeb系SI会社の社員として、顧客ECサイトで発生したトラブルに対応するという内容。詳しい概要はここ。私はチーム3に参加。

私のやったこと、できたこと

  • 初期段階での進行
  • ホワイトボード書き
  • Google drive の Documents で対応メモ作成

反省点

  • 役割分担できず。初対面で各々のスキルを正確に判断することは無理なので、とりあえず以下ぐらいに分けるといいのかな?
  • 私が中途半端に最初だけ仕切ってしまった。
  • 手が空いてしまった人がいたかも。
  • 全体での情報共有 → Google drive に気付き事項を書くドキュメントを作れば良いかも?
  • 不具合発生の初期対応。サーバーとメンテナンスメッセージの準備は行ったが、切り替え方法がわからず結局切り替えできなかった。
  • ホワイトボード、共用画面の活用
  • 報告会より前に1次報告を忘れていた。
  • 報告書に影響範囲を書いていなかった。

感じた点、学んだ点

トラブルシューティング

  • 所属チームは優勝。しかしTV放映の高負荷を乗り切った実感がなかったため、もやっとする感じに。
  • 過去からの贈り物はatコマンドだった。cronしか確認してないよ…。
  • タイムテーブル作成とかどうだろう。
  • 原因究明より、現状確認と正常な状態の把握&暫定対応が必要。
  • 仮想マシンなら、不具合の起こったインスタンスのクローンを作成してそれをいじり回す、という手段はいいね。

山◯君オペ

  • やったことは何かしらドキュメントに残す。
  • daemonはstartする前にinit書くとか。

懇親会

  • 本番機はもとより開発機でも、オペレーションのログは必ず取る。自分の身を守るため。ログが無ければ自分がやっていないことの証明ができない。
    • putty、Tera Term はログ機能を設定する。
    • sshコマンドなら、次のコマンドが活用できるかも。
      • tee
      • script
    • 対象が Windows Server なら PowerShell 入れて、オペレーションはコマンドで行う。
    • GUIでやるならムービー撮る。
  • 世の中、パケットキャプチャしてフラグチェックしてる人がいる。
  • ファイル内容を見る前にバイナリヘッダを確認する人がいる。

次回目標

  • 役割分担決める。
  • 情報共有。チームで取り組む。
  • 初期対応。(メンテナンス画面、ユーザー報告)

報告書一覧

ML110 G7とPCだけでDebianインストール

概要

ディスプレイはないけれど、Debianをネットブートしてシリアルコンソールでインストールする。

使ったもの

  • ML110 G7
  • X61T : DHCPサーバー、TFTPサーバー用
  • LANケーブル(クロス)

ネットブートファイルの取得

Debianのインストールマニュアルでネットワークブートの説明はここ

  1. netboot.tar.gzのダウンロード

    ここの"他のイメージ"からnetbootディレクトリを下ってnetboot.tar.gzをダウンロードする。

  2. netboot.tar.gzの解凍

debian-installerディレクトリが配置されているディレクトリがTFTPブートのルートディレクトリとなる。以下、このディレクトリをTFTPルートと呼び(TFTP_ROOT)と表記する。

TFTPサーバーがwindowsの場合は以下を実施する。

  1. (TFTP_ROOT)/debian-installer/i386/pxelinux.0をTFTPルートにコピー。すでにファイルが存在する場合は上書き。
  2. TFTPルートにpxelinux.cfgディレクトリを作成。すでに同名のファイルが存在する場合は削除してから作成。
  3. (TFTP_ROOT)/debian-installer/i386/boot-screens/syslinux.cfg(TFTP_ROOT)/pxelinux.cfg/にコピーし、ファイル名をdefaultにリネーム。

ここまで。要はnetboot.tar.gzに含まれるシンボリックリンクをリンク先の実体に置き換えている。(これに気付かずにしばらくハマった。)

ネットワークブートサーバーの設定

ネットワークブートサーバーにはTftpd32を使用。

  1. DHCPサーバーとTFTPサーバーしか使わないので、他はオフに。

    Tftpd32 GLOBAL設定

  2. TFTPサーバーの設定

    • "Base Directory"にTFTPルートを指定。
    • "PXE Compatibitily"にチェック。(自動的に"Allow '\' As virtual root"がチェックされる。)

      Tftpd32 TFTP設定

  3. DHCPサーバーの設定

    • "Boot File"に/pxelinux.0を指定。
    • 他の項目は適当に設定。

      Tftpd32 DHCP設定

シリアルコンソール向けの設定

  1. (TFTP_ROOT)/pxelinux.cfg/defaultを編集。先頭のコメント行の下に以下の1行を追加。

    SERIAL 1
    

    これはシリアルポートをコンソールに使うための設定(Ref.)。ML110 G7の仮想シリアルポートはCOM2のようなので1を設定する。

  2. (TFTP_ROOT)/debian-installer/i386/boot-screens/txt.cfgを編集。appendから始まる行を以下のように修正する。

    append vga=normal initrd=debian-installer/i386/initrd.gz -- quiet console=ttyS1
    

    これはカーネルパラメータ(Ref.)の修正。

    • vga=normal : 画面を80x25モードにする。数値の意味→VESA BIOS Extensions
    • console=ttyS1 : COM2をコンソールにする。

    以下、使ってないけどメモ。

    • earlyprintk=serial : カーネルログメッセージを表示する。デバッグ用なのでトラブルがなければ必要ないと思われる。

インストール

  1. ルーターのDHCPサーバー機能を切る。

    ブリッジ接続するため、DHCPサーバーが2台競合する。

  2. X61Tで有線LANと無線LANのネットワークブリッジ接続を設定。

  3. Tftpd32を起動して、ML110とX61Tを繋ぐ。
  4. ML110がDHCPIPアドレスを取得したら、SSHコンソールに接続。puttyだと何故かブチブチ切れるので、cygwinsshで接続した。

    ML110がDHCPIPアドレスを取得するとこんな感じ。

    Tftpd32 DHCP Server

  5. SSHコンソールから仮想シリアルコンソール起動。

  6. ML110の電源オン。
  7. ML110の初期設定で勝手にネットワークブートするはず。ブートに成功するとこんな感じ。

    TFTP ブート成功

    Installを選択するとDebianのインストーラが起動する。後はウィザードに従って進める。

    ネットワークブートはブート順の最後であるため、再インストールなどの場合はUSBキーボードを繋いでBeep音が鳴る直前から<F12>キーを連打する。(どこでBeep音が鳴るかは仮想シリアルコンソールを眺めて見極める。)

  8. 今回はSDカードも使って、パーティションをこんな感じに分けてみた。

    パーティション設定

    • 仮想化ホストにするので/varを多めに。
    • システムっぽい物はSDカードに。

課題

現在インターネット回線がWiMAXであり、WiMAXルーターに有線LANが無いので以下の課題がある。

  • ML110を直接WiMAXルーターに繋げない。適当なPCで有線LANと無線LANをブリッジ接続する必要があるので、インターネット接続が面倒。
  • メインで使っているPCに有線LANが無いのでML110に接続するのが手間。ML110にはとりあえず無線LANルーターを接続しているが、メインPCから繋ぐ時はインターネット回線のWiMAXルーターと排他になる。

使いづらいので今後どうにかしたいな。

参考

Installing Debian Linux 5.0 - Soekris Info Wiki

ML110 G7に付いてるHPのiLOがイケてるのでメモ

HP iLO概要

iLOはリモート管理ツールで、Web管理画面またはSSHコンソールから各種リモート操作ができる。以下の機能は無料で利用可能。

  • システム状態の確認
  • 電源on/off
  • 仮想シリアルコンソール

ML110 G7に電源とLAN1コネクタにLANを繋ぐと、サーバーを起動しなくてもiLOがDHCPIPアドレスを取得しに行く。取得されたアドレスにブラウザかSSHで接続すると、それぞれの画面に繋がる。ID/Passwordは本体貼り付けのタグに記載有り。

SSHで繋ぐとこんな感じ。

iLOのSSHコンソール

SSHコンソールのコマンド抜粋

公式のマニュアルはここ

以下コマンド抜粋

  • 電源の状態確認

    power
    

    または

    show /system1 enabledstate
    
  • 電源のon

    power on
    

    または

    start /system1
    
  • 電源のoff

    power off
    

    または

    stop /system1
    
  • リセット

    reset /system1
    
  • リブート

    reset /system1 hard     # コールドリブート
    reset /system1 soft     # ウォームリブート
    
  • 仮想シリアルコンソール

    vsp
    

    または

    start /system1/oemhp_vsp1
    

    マニュアルではoemhp vsp1になっているが、上記が正しいもよう。

    仮想シリアルコンソールから見たPOSTメッセージはこんな感じ。

    仮想シリアルコンソール

SSH経由でシリアルコンソールが使えるので、ディスプレイ無しでOSをインストールする予定インストールした