Backlog移行ツール + WebDAV-Syncを用いた別スペースへのプロジェクト移行

2019.07.07

プロジェクトの終了等で、伴いBacklogのプロジェクトを別スペースに移行する必要があり、そのツールを使った備忘録です。 Backlog移行ツールでは共有ファイルはコピーされないため、共有ファイルはWebDav-Syncを用いたので其の点も合わせて紹介します。

Backlog移行ツール

Backlog の別スペースへの移行ツールをBacklogを運営しているnulabが公開しています。

Backlog リリース:プロジェクトの基本データを別のスペースに移行できるツールをご用意しました Backlog 移行ツール ダウンロード

このツールで移行できる内容は下記となります。

課題や Wiki など、基本的なデータを別のスペースに移行することができるツールを無償でご提供しています。同一スペースでプロジェクトを分けたい時にもご利用いただけます。

制限事項としては下記があります。

ただし、共有ファイル、Subversion、Git、プルリクエスト、プロジェクト設定などはこのツールでは移行できません。

WebDAV-Sync

上記で書いたとおりBacklog移行ツールは共有ファイルは移行できないため、移行するためにこちらを用いました。 Backlogの共有ファイルはインターフェースとしてWebDAVを提供しているので、こちらを用いることで移行可能です。

WebDavにはプロトコルにPROPFINDというコマンドがあり、こちらを用いて同期を行うツールになります。

WebDAVサーバとwebdav-syncでrsyncするには! - 瀧(TAKI,Yasushi)/紅呪(kohju)のBlog WebDAV-Sync

移行する前に

まずは、移行元・移行先のBacklogの管理者に以下を依頼する必要があります。

  • 移行先のスペースの管理者である
  • 移行元のスペースの管理者である、もしくは移行元プロジェクトのプロジェクト管理者である

スペース管理者・プロジェクト管理者ともにかなり強い権限となります。プロジェクト管理者であっても 参照できる情報はかなり多岐にわたりますので、ここらへんの調整が最初の関門だったりします。

次に作業をするために移行元・移行先のBacklogのAPI Keyを払い出す必要があります。 BacklogのAPI Keyはプロジェクト単位ではなく個人単位での払い出しのため、 各スペースのユーザーのアイコン内の個人設定から払い出し画面を呼び出します。

APIの設定 | プロジェクト管理ツールBacklog

もう一点移行先のプロジェクトは移行元のプロジェクトと別名にすることも可能です。 また、既存のプロジェクトを移行先のプロジェクトとすることも可能ですが以下の理由で新規プロジェクトを作ることをおすすめとのことです。

もし既にご利用されているプロジェクトに集約されるような使い方をお考えの場合、 移行先のプロジェクトの指定を間違われると元の状態に復旧することができません。 新規プロジェクトを作成いただき、そちらに移行されることをおすすめします。

プロジェクトのデータを別のスペースに移行できますか? | プロジェクト管理ツールBacklog

移行してみた

作業時間がどれくらいかかるかまったく読めなかったので、作業用の環境としてAmazon Linuxを用意しました。 次にAmazon Linuxに入っているデフォルトはJava 7なので、まずJava 8を入れる必要があります。

$ sudo yum -y install java-1.8.0-openjdk
$ sudo alternatives --config java

ツールのダウンロードします。 2019/07/06 段階でWebDAV-Syncは1.1.9 Backlog移行ツールは1.2.4が最新となります。

$ curl -L -O http://prdownloads.sourceforge.net/webdav-sync/webdav_sync1_1_9.jar
$ curl -O https://backlog.com/ja/backlog-migration/backlog-migration-1.2.4.jar

移行用のマッピングファイルを作成します。

java -jar backlog-migration-1.2.4.jar \
init \
--src.key [移行元のAPIキー] \
--src.url [https://移行元のスペースID.backlog.jp] \
--dst.key [移行先の API キー] \
--dst.url [https://移行先のスペースID.backlog.jp] \
--projectKey [移行元のプロジェクトキー:移行先のプロジェクトキー]

こんな感じで入力することで移行用のマッピングファイルが作成されます。 次に移行用にマッピングファイルを編集していきます。

{
    "description": "移行先Backlogに設定可能なユーザーは[admin,tanaka,yamada]です。",
    "mappings": [
        {
            "info": {
                "name": "山田",
                "mail": "yamada@yyyy.com"
            },
            "mappingType": "UserId",
            "src": "yamada",
            "dst": "yamada"
        },
        {
            "info": {
                "name": "高橋",
                "mail": "takahashi@xxxx.co.jp"
            },
            "mappingType": "UserId",
            "src": "takahashi",
            "dst": ""
        },
        {
            "info": {
                "name": "佐々木(高橋の旧姓)",
                "mail": ""
            },
            "mappingType": "Name",
            "src": "佐々木(高橋の旧姓)",
            "dst": ""
        }
    ]
}

作成されたマッピングファイル内のdescriptionにdestで使うことができる値が表示されています。それを用いてdestの項目を埋めていきます。

その際に一点困ったことがありその対処をご紹介します。

移行元のスペースに存在しているユーザーで移行先のユーザーが存在しないと行ったケースも存在するかと思います。 その場合の対処方法としてはマニュアルにも書いてあるとおり以下になります。

すでに移行元のスペースから削除された等のユーザアカウントである場合は、 ダミーユーザを移行先に登録し、移行作業が終わった後、そのアカウントを削除してください。

Backlogの移行を行います。

マッピングファイルが作成できたら、移行を行います。

$ java -jar backlog-migration-<latest version>.jar \
execute \
--src.key [移行元のAPIキー] \
--src.url [https://移行元のスペースID.backlog.jp] \
--dst.key [移行先の API キー] \
--dst.url [https://移行先のスペースID.backlog.jp] \
--projectKey [移行元のプロジェクトキー:移行先のプロジェクトキー]

私が試した例ですとチケットが100 Wikiが4つ程度のプロジェクトでしたので、実際の移行は10分ほどで完了しました。

あとマニュアルに大事な記載があったのでこちらでも転機します。

execute コマンドを実行すると、課題とWikiがインポートされます。 移行元の課題やWikiが削除されることはありません。

共有ファイルを移行する

WebDAV-Syncを用いて共有ファイルを移行します。 WebDAV-Syncを用いた移行手順は以下の用になります。

  1. 移行元のBacklogの共有ファイルをローカルにダウンロードします。
  2. 移行先のBacklogの共有ファイルにローカルからファイルをアップロードします。

ツールの仕様として、WebDAV同士のSyncはできないので、ローカルを介した方法になっています・

移行元のBacklogからローカルにダウンロードするのは以下のコマンドとなります。

java -jar webdav_sync1_1_9.jar -down \
-u https://(移行元のBacklogのユーザー名):(移行元のBacklogのパスワード)@(移行元のスペースID.backlog.jp)/dav/(移行元のプロジェクトキー)/  \
-d (ファイルを保存するディレクトリ)

次に移行先のBacklogにローカルからアップロードするのは以下のコマンドになります。

java -jar ~/webdav_sync1_1_9.jar -up \
-u https://(移行先のBacklogのユーザー名):(移行先のBacklogのパスワード)@(移行先のスペースID.backlog.jp)/dav/(移行先のプロジェクトキー)/  \
-d (ファイルを保存するディレクトリ)

この方法で移行した際の制限事項として、課題内の共有ファイルのリンクのURLは書き換わっておらず、
移行元のBacklogの共有ファイルとなります。

最後に

Backlogの移行について書いてみました。 共有ファイルについても、別ツールを用いることでこちらも移行することができました。