Nov 102005
 

私はMP3ファイル作成をLinux上のGrip+LAMEでおこなっています。
それをrsyncのアーカイブモード(-a)で同期するようにしているのですが、転送先オーディオ機器のファイルシステムはFATなので、Timestampを偶数倍でしか保持していません。
参考:[NT] NTFSからFATへのファイルのコピー時に日時が変わる

そのまま同期してもTimestampが異なるので、何度でも同期対象になってしまい、せっかくのアーカイブモードが台無し。
そこで、カレントディレクトリ下にあるファイル群のTimestamp(atime,ctime)を偶数倍に切り上げるスクリプトです。

#!/usr/bin/perl -w

use File::Find;

find(\\&change_timestamp, ".");

sub change_timestamp {
  my $file = $File::Find::name;
  my ($cur_atime,$cur_mtime)=(stat($file))[8,9];
  my $new_atime = $cur_atime + $cur_atime % 2;
  my $new_mtime = $cur_mtime + $cur_mtime % 2;
  return if $cur_atime == $new_atime && $cur_mtime == $new_mtime;
  utime $new_atime, $new_mtime, $file;
}

…つまんないネタですみません。

 Posted by at 2:40 pm  Tagged with:

Sorry, the comment form is closed at this time.