Loading

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


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

ふぇにば|PhoEniBiR

投稿者プロフィール

わくわくしてて偉い系VTuver ふぇにば です。
少しでもお役に立てておりましたら嬉しいです(。・ω・。)

関連記事

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

    2016.06.23
  2. [jQuery] formのアクションを変更する〜フォーム送信時(Submit時…

    2018.08.10
  3. [jQuery] カーソルをあてた時に画像を切り替える方法(マウスオーバー・マウ…

    2018.06.20
  4. Vimを10倍かっこよく使いこなすためのコマンド集

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

    2016.05.09
  6. 『Excel VBA』マクロで月の日数を取得する(当月・前月・翌月)

    2016.08.02

コメント

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

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

CAPTCHA


New Article

  1. ChatGPT × StableDiffusion
  2. ChatGPT VS コンサルタント
  3. 注目したい5つのテクノロジートレンド2023
PAGE TOP