日曜日, 4月 19, 2015

rar.001のように分割されたファイルをperlスクリプトで結合してみた(Mac利用)

結合ソフトとかあると思うけど、ターミナルから実行権付きスクリプトを実行して結合できるようにしてみました。
「rar.001」の中身は単にぶった切られたファイルなのでcatで結合しているだけ。
たいした出来ではないが、個人的には残しておきたいのでここに張っておきます。

条件
・結合ファイル名は「○○○.part1.rar.001」のような形式を想定。
・part1〜part9まで存在する事を想定。結合対象が存在しなければ、そこのpartはスキップ。
・結合対象はカレントディレクトリに揃っている想定。
・カレントディレクトリには「○○○.part1.rar.001」の○○○に該当するファイル名は1種類であること。
・結合処理後は元データを削除。
・エラーチェックはしていない。そのため、元データの片方(例えば.rar.002)が破損していても気にせず結合するので出来上がりは破損となる。


---
#!/usr/bin/perl

$count = "1";
$tmp = "/tmp/hogehoge.pl_tmp";

while ($count < 10){
        $keyword = "*.part${count}.rar.001";
        $chk = system("ls $keyword > $tmp 2> /dev/null");

        if ($chk == "0"){
                $keyword_new = `cat $tmp`;
                @keyword_new = split(/\.001$/, $keyword_new);

                print "$keyword_new[$0] Creating...\n";
                system("cat ${keyword_new[$0]}.00? > $keyword_new[$0]");
                system("rm -fr ${keyword_new[$0]}.00?");
                system("sleep 5");
        }

        $count ++;
}

system("rm $tmp");
print "\n\nhogehoge.pl finish!!!\n\n\n";
---

土曜日, 7月 23, 2011

USBハードディスクの常時マウント

USBハードディスクをLinuxマシンで常にマウントするために、/etc/fstabの
第一フィールドに「/dev/sdb1」などのように固定的にデバイスを指定したら
あるタイミングでデバイスの認識が変更されたせいか、正常にマウントしなくなった。

正確に言うと、認識が「/dev/sdb」だったり「/dev/sdc」になったり・・・。
これを固定的にマウントする方法はないかと探してみたら、ありました。

USBハードディスク等には一意の固体識別ID(UUID)が割り当てられていて
現在認識しているデバイスパスにリンクが張られています。
そのリンクというのは、「/dev/disk/by-uuid」配下にありました。
「ls -l」で参照すると分かるように、内蔵HDDを含めてデバイスパスへの
リンクが見えます。

USBハードディスクを常時マウントするには、この
「/dev/disk/by-uuid/xxxxxxxxxx」
という、ちょっと長めのパスをデバイスパスとして/etc/fstabに記載すればOK。
但し、これは特定のデバイスと対の設定になるため、ハード交換した場合は当然
fstabの更新が必要になります。

以下サイトを参考にさせて頂きました。
http://colspan.net/blog/2008/11/15222550.html

木曜日, 1月 06, 2011

インストール済みrpm一覧にアーキテクチャを表示

"rpm -qa"でインストール済みのrpm一覧を出力するとアーキテクチャの表示が省略されるため32bit向けなのか、64bit向けなのか、が分からない表示をしてしまう。
今日は「まさにこれだ!」に出会った。

# rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n'

上記のようにコマンドを叩けば良い、との事。
情報元は以下のブログです。
http://d.hatena.ne.jp/shibainu55/20081014/1225176373