pdumpfs
2003-07-23-1
pdumpfs (CVS 版) に --exclude オプションがやっとついた
([pdumpfs:21] より)。会社のサーバで差分バックアップ開始! これで、
かなり安心。これまでよりかは思い切った作業ができそう。
<http://www.namazu.org/~satoru/pdumpfs/>
ところで、以下と同等のことをしてくれるコマンド or オプションが欲し
いですね。
行できなそうなので (今のところそんな心配はなさそうだけどね)。
例えばこんな感じな使いかた。
というわけで、Perl で作成 (ad hoc!!!)。「無償無・保証著・作権放棄」<http://lifehacks.ta2o.net/byebye-copyright.html>です。実際、日付ディレクトリがたくさんになったときに、ちゃんと機能するかは知らん。
([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(改定: 2003-08)
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);
}
}
この記事に言及しているこのブログ内の記事