古い記事
ランダムジャンプ
新しい記事

pdumpfs

2003-07-23-1
pdumpfs (CVS 版) に --exclude オプションがやっとついた
([pdumpfs:21] より)。会社のサーバで差分バックアップ開始! これで、
かなり安心。これまでよりかは思い切った作業ができそう。
<http://www.namazu.org/~satoru/pdumpfs/>

ところで、以下と同等のことをしてくれるコマンド or オプションが欲し
いですね。

$ rm -rf /home/backup/????/??/??/foo/bar
日付ディレクトリがたくさんあると、引数が長くなりすぎて shell で実
行できなそうなので (今のところそんな心配はなさそうだけどね)。
例えばこんな感じな使いかた。

$ pdumpfsrm /home/backup/2003/04/01/foo/bar
"2003/04/01" と指定してあるけど、これは消したいディレクトリ or ファイルをシェルの補完機能で指定しやすくするため。内部ではここはワイルドカードになる。

というわけで、Perl で作成 (ad hoc!!!)。「無償無・保証著・作権放棄」<http://lifehacks.ta2o.net/byebye-copyright.html>です。実際、日付ディレクトリがたくさんになったときに、ちゃんと機能するかは知らん。

#!/usr/bin/env perl
use strict;
use File::Path;

my $target = shift @ARGV;
my ($path, $post) = ($target =~ m|^(.*)\d{4}/\d\d/\d\d/(.+)$|);

traverse($path, 0, $post);

sub traverse {
    my ($path, $depth, $postdir) = @_;
    if ($depth == 3) {
        $path .= "/".$postdir;
        return unless -e $path;
        print "$path\n";
        rmtree $path;
        return;
    }
    opendir(DIR, $path) or die;
    my @dirs = grep {/^\d/} readdir(DIR);
    close(DIR);
    foreach (@dirs) {
        traverse("$path/$_", $depth + 1, $postdir);
    }
}
(改定: 2003-08)
この記事に言及しているこのブログ内の記事