nDiki : 2014年06月23日

2014年6月23日 (月)

rsync --link-dest でスナップショットをとる

バックアップには pdumpfs をずっと使い続けているけど、メンテナンスもされていないので、ぼちぼち rsync --link-dest を使ったバックアップにしようかと。

rsync は --link-dest で前の同期ディレクトリを指定するとそちらに同一のファイルがある場合はそのファイルへのハードリンクにする形に同期してくれるので、無駄なくスナップショットをとれる。ただ --link-dest は自分で明示的に指定する必要があり面倒なのでなんらかしらスクリプトを作る必要がある。

今のところ決定版みたいなのが見つかっていないので、とりあえず用に書いた。ローカル-ローカル専用。

 #!/usr/bin/perl

 use warnings;
 use strict;
 use File::Spec;
 use File::Path;

 my ($sec, $min, $hour, $mday, $mon, $year) = localtime(time);
 $year += 1900;
 $mon++;

 my $backup_root_dir = '/mnt/backup';
 my $source_abs_dir  = '/home/naney';

 my $i          = 1;
 my $backup_dir = sprintf("%04d-%02d-%02d-%02d%02d%02d",
   $year, $mon, $mday, $hour, $min, $sec);

 my $backup_abs_dir = File::Spec->catfile($backup_root_dir, $backup_dir);
 exit 1 if -e $backup_abs_dir;

 opendir(my $dh, $backup_root_dir) or die;
 my @old_backup_dirs = reverse sort { $a cmp $b }
   grep { /^\d{4}-\d{2}-\d{2}-\d{2}\d{2}\d{2}$/ } readdir $dh;
 closedir $dh;

 my $link_dest_dir;

 for my $old_backup_dir (@old_backup_dirs) {
   exit 1 if $old_backup_dir eq $backup_dir;
   next   if (($old_backup_dir cmp $backup_dir) > 0);
   $link_dest_dir = $old_backup_dir;
   last;
 }

 File::Path::make_path($backup_abs_dir);
 exit unless -d $backup_abs_dir;

 my $command;
 if ($link_dest_dir) {
   $command
     = "rsync -av --delete --link-dest=../$link_dest_dir $source_abs_dir $backup_abs_dir";
 }
 else {
   $command = "rsync -av --delete $source_abs_dir $backup_abs_dir";
 }

 system($command);
スポンサード リンク

今日のさえずり: 開発環境につながらない間に何をしているかで差が出る

2014年06月23日

  • 07:32 夢の中に mrmt さんが現れて話し方についてアドバイスをくれた後、(いろいろ)指導してくれる人はいるのかと尋ねられた。指摘・指導してくれる人がいる境遇の人はいいなと夢の中で思った。
  • 11:00 開発環境につながらない間に何をしているかで差が出る。
  • 13:56 ノート PC どんどんバッテリが減っていくと思ったら AC アダプタの向こう側のタップの向こう側が金曜日に抜いたままだった。
  • 14:53 ディレクターの人 IRC チャネルがんがん作るの大好き。
  • 21:18 秋の気配。
  • 21:26 RT @fujipon2: 昔、かなり古いX68000を修理に出したとき、シャープの人は「もう部品もあまり残ってなかったんですけど、がんばりました!ずっと使っていただいてありがとうございます!」って、直してくれて、お金もとらなかったんだよね。あれは感動した。
  • 22:11 RT @Yam_eye: 時間がないことを一番の理由にして行動してはいけない。後から見れば、「時間はあったのに」と思えることばかりだから。
[ 6月23日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.047064s / load averages: 0.14, 0.31, 0.36
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker