bz0のにっき

quick and dirty prototype

linuxでのファイルバックアップ関連

Linuxでのファイルバックアップ関連についてメモしておく

環境

CentOS 6.5

圧縮

1.どの圧縮方法を選択すべきか

gzip: 一般的な圧縮率。
bzip2: より強力な圧縮。時間がかかる。バックアップとしてはこれが一般的とのこと。
xz: LZMA2 アルゴリズムを使用する。7z の親戚。 Linuxカーネルソースとか巨大なソース等の圧縮に採用されている。最近のディストリならたいてい標準で入っている。圧縮率は bzip2 よりも優位だがより CPU、メモリリソースを消費する。
正直時間がかかる割に bzip2 よりサイズがでかくなるパターンがたまにあるので注意。
最近流行にのって単発の圧縮ならこれをよく使ってる。
zip: あんまり使わないなあ。。。

圧縮展開系のコマンドのまとめ - Qiita

2.コマンド実行

bzip2で圧縮

一般的にはバックアップはbzip2を使うようなので、これでやってみる。

tar cvjf [output.tar.bz2] [input]

例)
tar cvjf /var/www/html/output.tar.bz2 /var/www/input

  • 「/var/www/html/output.tar.bz2」のところは圧縮ファイル名(パス)を指定
  • 「/var/www/input」は圧縮したいディレクトリ・ファイルのパスを指定

bzip2がない場合は、インストールする。
yumで入れられるので簡単。

CentOSでbzip2が解凍できないエラー · 1000g

〇日前に作成したファイルを削除

サーバの容量にも限りがある為、〇日分だけ残してそれ以前のファイルを
削除したい場合は、下記のようなコマンドが使えます。

find /var/www/xxx/ -mtime 7 -exec rm -f {} \;

圧縮と7日以前に作られたファイルを削除するbashです。

#!/bin/sh
DATESTR=`date +%Y%m%d`

#圧縮
tar cvjf /var/www/test/${DATESTR}.tar.bz2 /var/www/html/a1

#7日以前のものは削除
find /var/www/test/ -mtime 7 -exec rm -f {} \;

参考)リモートサーバへのコマンド実行

rsyncコマンドで他サーバへバックアップした後に、バックアップ先の
ファイルを圧縮したい場合にリモートサーバへのコマンド実行を行うことがありそうなのでメモ。

sshコマンド

ssh コマンド | コマンドの使い方(Linux) | hydroculのメモ

大きいファイルを圧縮していると、レスポンスがかえってこずに
処理途中で接続が切れてしまう事があるようなので、下記を設定してなるべく切れないようにする。

クライアント側(接続元)の ~/.ssh/config に以下を記述する。

Host *
ServerAliveInterval 60

ssh コマンド | コマンドの使い方(Linux) | hydroculのメモ

moshコマンド

接続が切れても自動で繋ぎなおしてくれるmoshというコマンドもあるよう。
mosh コマンド | コマンドの使い方(Linux) | hydroculのメモ