Killing Time 2nd

備忘録、日々の徒然想いを残します。

リモートでバックアップ

リモートでバックアップ

  • バックアップのソース:host_source
  • バックアップ先:host_dist
  • バックアップ先のディレクトリ:/mnt/disk1/arichives

バックアップしたいデータのあるホスト、host_sourceで下記を実行する

$ (cd src_dir; tar cvfp - . ) | ssh user@host_remote "(cd
/mnt/disk1/archives/ && tar xfp -)"

バックアップ先がbusyboxでtarのオプション、pが使えなかった。
データ量が多いとかなり時間がかかるので、端末を繋げ続けられない場合の対処方法は以下の通り。
実行中のプロセスを中断するにはCtrl + z。再開するには
$ fg
とコマンドを打つ。バックグラウンドで実行しながら再開する場合は
$ bg
とコマンドを打つ。
◆screenの便利な使い方
screenはひとつの端末で複数の端末を実現するコマンドですが、リモートでログインしたときに便利な使い方があります。
普通、何かプログラムを実行した場合、接続を切ってしまうとプロセスが中断されてしまいますが、screenを使ってプロセスを独立して実行させると、接続を切ってもプロセスは走り続けます。膨大なバックアップ時に利用すると良い。
screenを使ってプログラムを実行する
$ screen -S NAME COMMAND
NAMEは、screenを切り離してバックグラウンドで実行させたりするときに使う名前です。名前は付けなくても構いません。
COMMANDに実行したいコマンドを打ち込みます。
使い方の例

$ screen -S back-up tar cfpv - ./ | ssh user@host_remote "(cd
/mnt/disk1/archives/ && tar xfp -)"

screenの切り離し
Ctrl + Shift + a, d
と打ち込むことでscreenを切り離すことができます。切り離した状態になると、ログアウトしてもプロセスが走り続けます。
バックグラウンドのscreenの確認
現在、バックグラウンドで走っているscreenの確認をするには
$ screen -ls
とコマンドを打ちます。
バックグラウンドで走っているscreenをアタッチ
$ screen -r NAME/ID

NAMEはscreenでプログラムを実行する際に決めたNAME。IDはscreenのIDであり、上記のバックグラウンドのscreenの確認で確認可能。