Loading

[Linux] シェルスクリプトでフォルダ単位圧縮バックアップ & ローテート(世代管理)

backupfree-00-730x382

Linuxで、フォルダ単位でバックアップ(圧縮)し、更に世代管理(ローテート)できるスクリプトをご紹介します!バックアップを取得していれば、何か不具合があった際に戻せるようになりますので、安心設計のためにご活用下さい(。・ω・。)

[Linux] シェルスクリプトでフォルダ単位圧縮バックアップ & ローテート(世代管理)

スクリプト完成版

まずは、シェルスクリプトでフォルダ単位のバックアップを行い、更に世代管理(ローテート)もしてくれるスクリプトの全容をご紹介します!

# --------------------------------------------
# フォルダの日次バックアップ(世代管理)
# ※日次で動かすこと前提
#   $1 : バックアップ対象のフォルダ
#   $2 : バックアップ先のフォルダ
#   $3 : 管理世代(日)
# --------------------------------------------
# 変数定義
back_up_path_from=`echo $1 | sed -e "s/\/\$//"` # フォルダパスの末尾が/の場合は除外する
back_up_path_to=`echo $2 | sed -e "s/\/\$//"` # フォルダパスの末尾が/の場合は除外する
yyyymmdd=`date +%Y%m%d` # 日付情報を取得
yyyymmdd_del=`date +%Y%m%d --date "$3 days ago"` # 削除するログファイルの日付を取得

# ファイル名取得
folder_name=`echo ${back_up_path_from} | tr -s '/' '\n' | tail -1` # フォルダ名のみを取得する

# 対称フォルダへ移動
cd ${back_up_path_from}
cd ../

# バックアップ実施
zip -r ${folder_name}_${yyyymmdd}.zip ${folder_name}
mv ${folder_name}_${yyyymmdd}.zip ${back_up_path_to}

# 過去バックアップファイル削除
rm -f ${back_up_path_to}/${folder_name}_${yyyymmdd_del}.zip

スクリプトの使い方

本スクリプトは、3つの引数を用いて利用します!使う人がしっかりすること前提の引数チェック入れていないバージョンですので、ご利用の際はご注意下さい(ノд・。)

引数1:バックアップ対象のフォルダ
引数2:バックアップ先のフォルダ
引数3:世代管理日数(数字)

# /usr/local/bin/配下を、7日間の世代管理でローテートする
sh backup_daily.sh /usr/local/bin/ /tmp/99_backup/ 7

ソースコード解説

シェルで日付情報の取得

バックアップを取得する際に、世代管理をするためにフォルダの末尾に日付情報を追加します。また、世代管理(ローテート)のために削除ファイルも選定しますので、○○日前の日付もあわせて取得しています!

yyyymmdd=`date +%Y%m%d` # 日付情報を取得
yyyymmdd_del=`date +%Y%m%d --date "$3 days ago"` # 削除するログファイルの日付を取得
バックアップファイルを圧縮で取得

今回はzipファイル形式で取得しています!-rでフォルダ単位のzipファイル生成してます。

zip -r ${folder_name}_${yyyymmdd}.zip ${folder_name}
ファイル削除(世代管理)

世代管理を行うために、rmコマンド(remove)を利用してます。-fで強制削除ができます(yes, noを聞かれない形)

rm -f ${back_up_path_to}/${folder_name}_${yyyymmdd_del}.zip

【仮想通貨】1ヶ月で市場規模60兆円増!2018年の仮想通貨市場見通し

【仮想通貨】ビットコインダイヤモンド(BitcoinDiamond・BCD)の特徴・チャート・相場予想・最新ニュースと今後の展望

関連記事

  1. [PHP] 入力フォームのバリデーションチェックを実装する

    2016.05.09
  2. [Vim] Vimを10倍かっこよく使いこなすためのコマンド集

    2016.05.12
  3. [PHP] ショートカット(短縮)URL取得 with Google短縮URL …

    2016.05.09
  4. [Windows] コマンドプロンプトで簡単にファイル一覧を作成する方法!

    2017.11.08
  5. [Excel VBA] マクロで辞書オブジェクト(KEY-VALUE)の使い方ま…

    2016.09.01
  6. SSHでリモートコマンド実行、成功失敗の返り値(戻り値)取得方法

    2016.06.23

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


New Article

  1. HNIMGL9701_TP_V4
  2. gori0I9A9910_TP_V
  3. SAYA160105352465_TP_V
  4. 物語_羽川翼_01
  5. sangokutenbu_fukunokami_01
PAGE TOP