【Git】リモートリポジトリを引っ越しする

【Git】AWSからロリポップにリモートリポジトリを引っ越しする
sinceretechnology

 

 

 

 

はじめに

 

長年AWSのEC2無料枠でgit管理していましたがそろそろ一年が経過するので、サブで借りていたLOLIPOPのハイスピードプランにいくつか移行してみました。方法は至って簡単で、まずデータをオブジェクトのままダウンロードしてバックアップを取り、次に移行元サーバーにGitをインストールした後にそのデータを移行先サーバーにアップロードします。その手順をメモ代わりに残しておきます。

 

 

 

 

環境

 

【ローカルPC】
WINDOWS11

【リモートサーバー】


移行元:
AWS EC2
2.micro


移行先:
LOLIPOPレンタルサーバー
ハイスピードプラン

 

 

 

 

移行手順の概要

 

AWS EC2サーバーのGITリポジトリをWINDOS11のローカルPCからSSH接続してGITリポジトリをCLONEでローカルに取得したのち、LOLIPOPサーバーにSSH接続してローカルに取得したリポジトリをPUSHしてする。

 

コマンドラインで行う場合は、要領でおこなう

  1. コマンドラインでssh接続できることを確認する
  2. まず移行元のGitサーバーのクローンを作成します
  3. 次に作成されたクローンの.gitフォルダに移行します
  4. 最後にすべての更新情報を新しいGitサーバーにPUSHします

 

git clone --mirror <SOURCE_REPOSITORY_URL> 
cd <REPOSITORY> 
git push --mirror <DESTINATION_REPOSITORY_URL>

 

 

 

 

移行手順の詳細

 

 

 

1.SSH接続

 

WINDOWS PCのターミナルを起動します。

 

SSHコマンドで移行元のサーバーに接続します。

ssh {アカウント名}@ssh.lolipop.jp -p 2222 -i {秘密鍵のパス}

 

接続できたら秘密鍵をホームディレクトリの.sshフォルダにid_rsaの名前で入れる

cd ~/.ssh
copy {秘密鍵パス} ./id_rsa

 

今度は秘密鍵パスの指定を外してSSH接続できるかどうか確認する

ssh {アカウント名}@ssh.lolipop.jp -p 2222

 

デフォルトの秘密鍵で接続できればOK

 

 

 

2.移行元のサーバーからGITレポジトリのバックアップを取得する

 

git clone に mirrorオプションを付与して移行元のリポジトリのバックアップを取得します。

パラメータにはリモートリポジトリのURLを指定します。以下はSSH接続の場合です。

 

git clone --mirror ssh://{アカウント名}@{ホスト名}:{ポート番号}{GITリポジトリパス}

※ ~ssh/configにssh接続設定が存在する場合は、SSH接続情報(下記の例では、「{アカウント名}@{ホスト名}:{ポート番号}」をSSH接続設定の名前に置き換えてもかまいません。

 

 

WINDOWS11では次のようなエラーが出ることがある

Unable to negotiate with 133.130.35.108 port 2222: no matching host key type found. Their offer: ssh-rsa,ssh-dss
fatal: Could not read from remote repository.

 

その場合は、ホームディレクトリの.sshフォルダにconfigファイルを作成して次のコードを設定する

Host * 
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa 
UpdateHostKeys no

 

SSHクライアントがバージョンンアップしたことが原因のようである

また、次のエラーが出る場合は、GITがcacheをみにいっているので、UpdateHostKeys noをconfigについかする

Cannot access gitlab repo.....

 

 

 

3.移行先のサーバーにGITレポジトリを作成する

 

移行先さーばーに接続する。
次に、GITサーバーのルートディレクトリでプロジェクトふぉるだを作成する

mkdir projectフォルダ

cd projectフォルダ

git init --bare --shared

 

 

 

4.移行先のサーバーのGITレポジトリにプッシュする

 

 

移行先サーバーの秘密鍵をホームディレクトリの.sshフォルダにid_rsaの名前で入れる

cd ~/.ssh

copy {秘密鍵パス} ./id_rsa

 

前回と同様に秘密鍵パスの指定を外してSSH接続できるかどうか確認する

ssh {アカウント名}@ssh.lolipop.jp -p 2222

 

デフォルトの秘密鍵で接続できればOK

移行先のアカウント名、ホスト名、ポート名、GITリポジトリパスを設定してPUSHする

git push --mirror ssh://{アカウント名}@{ホスト名}:{ポート番号}{GITリポジトリパス}

 

 

 

5.移行先のサーバーからリポジトリーのクローンを作成する

 

 

確認のためリモートリポジトリから新しいローカルリポジトリを作成してみる

git clone ssh://{アカウント名}@{ホスト名}:{ポート番号}{GITリポジトリパス}

ローカル環境に新しいリポジトリがでいていればOK

 

 

 

 

参考

 

http://root99.blogspot.com/2019/01/osdsassh-key.html

 
 
 
 
 
 

この記事に関するご質問やご意見などございましたらお問い合わせフォームからお気軽にご連絡ください。