[Linux]


この日記のはてなブックマーク数 このエントリーを含むはてなブックマーク

ディスクのバックアップを取るにはtarを使用すると便利である。tarにはnewerというオプションがあり、これで差分バックアップを取ることが可能。


[サンプル: backup.txt]


#!/usr/bin/perl
use Date::Calc qw(:all);

#---------------------------------------------------------
# 設定
#---------------------------------------------------------
#バックアップするフォルダを指定
my @list = qw(/backup /home /etc /var /usr/local/sbin);


#フルバックアップを取る曜日
my $fullbackup = 'Tue';


#バックアップファイルの保存先
my $backup_location = '/mnt/backup';


#バックアップログの保存先
my $backuplog_location = '/mnt/backup/log';


#バックアップ期間 (week にて指定)
$period = 2;
#---------------------------------------------------------
# 設定終わり
#---------------------------------------------------------


#---------------------------------------------------------
# スクリプト開始
#---------------------------------------------------------
#今日のタイムスタンプを取得(形式:2003-06-12)
($year, $month, $day, $hour, $min, $sec) = Today_and_Now();
my $today = "$year-$month-$day";


#削除するファイルの日付を取得(この日付より以前のファイルを削除)
my ($d_year, $d_month, $d_day) = Add_Delta_Days($year, $month, $day, - ($period * 7));
$delete = "$d_year" . "$d_month" . "$d_day";


#保存期間を超えたバックアップファイルを削除
my @file_list = `/usr/bin/find $backup_location -type f`;
foreach my $file_path (@file_list){
chomp $file_path;
my $filename = (split(/\//, $file_path))[-1];
$date = (split(/\./, $filename))[1];
my ($cyear, $cmonth, $cdate) = split(/-/, $date);
if(Date_to_Days($cyear, $cmonth, $cdate) < Date_to_Days($d_year, $d_month, $d_day))
{
`/bin/rm -f $file_path`;
}
}


#今日の曜日($wday)を取得 (形式: Tue)
my $week_num = Day_of_Week($year,$month,$day);
my $wday = Day_of_Week_Abbreviation($week_num);


#昨日のタイムスタンプを取得(2003-06-11 12:15)
my ($y_year, $y_month, $y_day) = Add_Delta_Days($year, $month, $day, -1);
my $yesterday = "$y_year-$y_month-$y_day $hour:$min";


### 今日の曜日($wday) と 設定($fullbackup) が同じ場合、フルバックアップを取る###
if ($wday eq "$fullbackup")
{
`tar --totals -cvzf $backup_location/fullbackup.$today.tar.gz @list 1> $backuplog_location/fullbackup.$today.log 2> $backuplog_location/fullbackup.$today.error`;
}

###今日の曜日($wday) と 設定($fullbackup) が等しくない場合、差分バックアップを取る###
else
{
`tar --totals --newer '$yesterday' -cvzf $backup_location/incremental.$today.tar.gz
@list 1> $backuplog_location/incremental.$today.log 2> $backuplog_location/incremental.$today.error`;
}



関連記事
キーボード割り当ての変更(Xwindows)
multitail - 複数ファイルをtail
コンソールの設定
fetchmail
ssh_exchange_identification: Connection closed by remote host
submission portへの対応
ncコマンド (netcat)
arpwatch
webminのmajordomoモジュール
pdflibのインストール (Perl)
VIRUS: Encrypted.Zip
yum-plugin-fastestmirror
シングルモードでの起動方法
timezoneの設定
Courier-IMAP
vsftpd - FTPユーザの制限
vncserverの設定
Gnomeでのアイコンサイズ
ワークスペースの切り替え
rdesktop - リモートのウィンドウズサーバを操作
pfxファイルの変換
Mbox形式からMaildir形式への移行
namazuでUTF8ファイルの検索
CRコードの除去
fs type nfs not supported by kernel
MTAの切り替え
qpopperをstandaloneで起動
mailコマンドで添付の送信
apopのみ許可
フォントの追加
ATOKのインストール
rhn_register - 名前またはサービスが不明です
bashのreverse search機能
pg_config.h - PHPのmakeに失敗
/etc/ld.so.conf 共有ライブラリの検索パス
IGNOREEOF - Ctrl+Dでの間違いログアウトを防ぐ
syslog - ログの一括管理
ipop3d - POP3サーバ
fml - メーリングリストへのユーザ登録と削除
コマンドプロンプトの表示設定
MP-BIOS bug
サポートされているシグナルの種類
NFSのマウントオプション
netfs
/etc/fstab - ファイルシステム情報の設定
namazuでエクセルファイルの検索
IMAP - famdのエラーメッセージ
ファイル名がハイフンから始まるファイルの削除
QpopperにおけるAPOPの設定
NFSの設定
manのパスを追加
DHCPサーバの設定
quotaによるディスク容量制限
仮想コンソール
Fedora Coreにおけるmanの文字化け
webalizer - VisitTimeout
PHPのインストール
バックアップスクリプト
Sambaアクセス時のユーザ権限の設定
Bind - リモートサーバにあるbindのバージョンを調べるには
rootのパスワードを忘れたら
xinetdによるサービスの起動
Qpopperのtimeoutを変更するには
NKF 2.0.4のインストール
ジョブの一時停止
サービスの起動と停止
.bash_profile - bashの環境変数設定ファイル
ターミナルがフリーズした場合の対処法 - ctrl+q
バックグラウンドでジョブを実行するには
ユーザアカウントをロックするには
テープデバイスによるバックアップ
標準エラーのリダリレクト
rsyncによるミラーリング
namazuで特定のディレクトリを検索対象から外す
telnetでのメール受信方法
device busy の際のumount
webalizer - 検索エンジンの設定
Bind - lame server resolving をログから消すには
at - ジョブの予約
webalizerの日本語化
テープの操作
システム起動時にプログラムを立ち上げるには
sambaの設定
ランレベルの変更
PHP3と4の共存
namazuの設定
/etc/sysconfig/i18n - 言語設定ファイル
ハードディスクの増設方法
Cron - プログラムの定期実行
bashの操作方法
広告