私が使用しているシンプルなバックアップスクリプトを紹介します. こういったスクリプトはあまり凝らない様にするのがポイントですが, 意外と実践は難しいものです.
バックアップスクリプト
スクリプトの概要
- FTPでリモートのサーバーにバックアップファイルを保管することを想定しているため一般ユーザーのディレクトリにバックアップファイルを作成する
- サーバー内でバックアップファイルが無限に増えないようにfindコマンドでタイプスタンプを確認して, 前8日間のファイルのみ保持する. それ以外は削除する
- バックアップ対象は別ファイルにパスを記載する
スクリプトの中身
#!/bin/bash backup_hostname=`hostname` backup_period="7" backup_save_dir="/home/admin/backup/" backup_target_dir="/root/bin/backup_list" backup_date=`date "+%Y%m%d%H%M%S"` backup_filename=$backup_save_dir"/"$backup_hostname"_"$backup_date".tar.gz" tar czfP $backup_filename -T $backup_target_dir > /dev/null 2>&1 chown admin:admin $backup_filename chmod 700 $backup_filename find $backup_save_dir -type f -daystart -mtime +$backup_period -exec rm {} \;
スクリプトの使い方
1. adminユーザーを作成
rootユーザーでは, リモートでのバックアップファイルの扱いが困難な場合があるため, 一般ユーザーのディレクトリを使用します.
[root@centos ~]# useradd admin [root@centos ~]# passwd admin
2. バックアップ用ディレクトリを作成
[root@centos ~]# mkdir /home/admin/backup [root@centos ~]# chmod 700 /home/admin/backup [root@centos ~]# chown admin:admin /home/admin/backup
3. バックアップスクリプト配置
上のスクリプトをエディタから貼り付けます.
[root@centos ~]# vim /root/bin/backup [root@centos ~]# chmod 700 /root/bin/backup
4. バックアップ対象ディレクトリ設定
[root@centos ~]# vim /root/bin/backup_list
対象ディレクトリは何でも構いません.
/root /etc
5. スクリプトのテスト
[root@centos ~]# /root/bin/backup
問題なければ, /home/admin/backup/にバックアップファイルが作成されます.
6. CRON設定
毎日1時に実行する例です.
[root@centos ~]# echo "0 1 * * * root /root/bin/backup" > /etc/cron.d/backup
tarとfindを使用したシンプルなバックアップスクリプト