Ubuntu Serverのバックアップファイルをsshで転送する方法

とあるUbuntu Serverを個人的に運用中なのですが、このUbuntu Serverをまるごとバックアップする方法をメモ程度に書いていきます。

通常手順

みなさんがおそらく通常ubuntuをまるごとバックアップする際に使用しているコマンドはddコマンドだと思います。

dd if=/dev/sdb of=/tmp/image

この場合、外付けHDDなどを接続して容量を確保した上で実行しているはずです。

しかし、私の環境の場合このような形で準備することができませんでした。

sshで転送する手順

調べていくと、ofで指定する先をsshで接続してリモート先にする方法を記載している方を見つけました。それが以下の形です。

dd if=/dev/sdb | ssh <username>@<ip address> dd of=/tmp/image

これがなぜ実現できるのか、このddコマンドの仕組みは

  1. ddコマンドはofを省略すると標準出力に結果を出す。
  2. それをsshにパイプで渡す。
  3. sshは、remote hostのあとに続けてコマンドを入力すると、remotehost先で個のコマンドを実行する事が可能。
  4. ddのifを省略すると、標準入力から入力されたものを対象として動作する。

これらの結果からローカルホスト上のddコマンドの出力が、リモートホストのddコマンドの入力となった。

リストアについて

リストアは以下のコマンドでできました。

ssh <username>@<ip address> dd if=/tmp/image | sudo dd of=/dev/sdb

コメント

タイトルとURLをコピーしました