ラベル Dar の投稿を表示しています。 すべての投稿を表示
ラベル Dar の投稿を表示しています。 すべての投稿を表示

2007年9月24日月曜日

バックアップ時のキャッシュディレクトリの挙動について

 バックアップする時に悩むのが Cache ディレクトリの取扱い。homeディレクトリを丸ごとバックアップしたいときなんて、例えば、firefoxのキャッシュフォルダや、各種画像のサムネイル、テンポラリフォルダなどなど。
 Dar で、~/.darrc に除外したいディレクトリを逐一指定しておくのもいいけれど、 Cache Directory Tagging Standard という仕組みを使えば簡単にキャッシュディレクトリを除外できる。

仕組みは簡単で、キャッシュディレクトリだと認識するディレクトリの中に、CACHEDIR.TAGというファイルを作り、ファイルの中身を、
Signature: 8a477f597d28d172789f06886806bc55
# This file is a cache directory tag created by (application name).
# For information about cache directory tags, see:
# http://www.brynosaurus.com/cachedir/
と書いておけばいい。最初の一行だけで事足りるだろうけど。ようするにキャッシュディレクトリにタグ付けをしておくということですね。

あとは例えばDarならバックアップのさいに、 -, オプションを付ければ CACHEDIR.TAG のあるディレクトリは除外してバックアップしてくれる。
ほかにもtar cpiorsync なども対応しているので、ガンガン利用していきましょう。

いやぁ、linuxってかゆいところに手が届く的な便利さがありますね♪

以下、作業メモ。
find ~/ -iname cache -print | wc
で23個ものcacheディレクトリがあったので、
#!/usr/bin/ruby
#
#

name= "set_cachetag.rb"
tt1 = "Signature: 8a477f597d28d172789f06886806bc55\n" +
"# This file is a cache directory tag created by "
tt2 = "# For information about cache directory tags, see:\n" +
"# http://www.brynosaurus.com/cachedir/ \n"
tagtext = tt1 + name + "\n" + tt2

while gets
if File.directory?($_.chop) then
cpath = $_.chop + "/CACHEDIR.TAG"
unless File.exist?(cpath) then
print $_
tag = File.new(cpath , "w")
tag << tagtext
tag.close
end
end
end
とrubyスクリプトを書いて、
find ~/ -iname cache | ruby set_cachetag.rb
としていっきに CACHEDIR.TAG ファイルを生成した。楽だ♪

2007年8月30日木曜日

Emacsで快適な翻訳環境を

Darが便利なので常用することに決めたのですが、日本語化されていないので、自分で適当にチマチマと翻訳することにしました。
最近のlinuxのアプリは言語に依存する部分を別ファイル形式にして、それを差し替えていろんな言語に対応できるようになっています。
この言語ファイルが拡張子poの付いたテキストファイルで、これを変換してバイナリ形式のmoファイルにし、/usr/share/locale-langpack/ja/LC_MESSAGES/あたりに放り込むことで簡単に日本語化することが出来るのです。そこで早速poファイルを編集するための環境作りを。いそいそ。

Emacsにpo-modeを


とりあえずEmacsでpoファイルを編集するためのpo-modeが入っていなかったので、
sudo apt-get install gettext-el
してpo-modeをインストール。とくに~/.emacsに設定することもなく。さっそく、Darのソースを落としてきて展開し、中のpo/ディレクトリに移動し、
cp dar-pot ja.po
としてdarの言語テンプレートから日本語のja.poファイルを作り、emacsで開いてみました。

操作方法

u次の未翻訳項目に移動
C-j元の言語をコピペする
RET項目の翻訳状態に入る
C-c C-cその項目の翻訳を終了する。
C-c C-k今いる項目の翻訳状態から抜ける。
Vpoファイルに異常が無いか確認してからタイムスタンプを修正し、上書き保存する。
s該当個所のソースコードを開く。
Epo-modeを抜ける。
な感じで。h キーで簡易ヘルプも表示されます。POファイル自体はタダのテキストファイルで、msgid "" が元の言語で、msgstr "" に翻訳した言葉を書いていきます。

ネット接続で英文を翻訳

emacsでpo-modeで翻訳できる環境にはなったけど、これだけだとつらいので、Emacs でテキスト翻訳をする Emacs Lisp パッケージ text-translator をさくっと導入します。リンク先からダウンロードしてきて ~/.lisp に放り込み、~/.emacs に以下を追記します。
(require 'text-translator)
;;翻訳キー設定
(global-set-key "\C-xt" 'text-translator)
(global-set-key "\C-x\M-T" 'text-translator-translate-last-string)
適当にC-xtにキーを設定し、おもむろに英文を範囲選択してからキーを押すと、見事に和訳された文章が表示されました。いろんな翻訳サイトに対応していて、ほかにもルー語変換も出来るそうです^^;


ん〜シームレスにemacs内で完結するというのは気持ちがいいですね。普通だったら、翻訳したい文章をコピーして、Webブラウザで翻訳サイトを開き、テキスト入力部分にコピペし、翻訳ボタンをクリック。
英和辞書なら、和英辞書ソフトをを立ち上げて、同じくコピペするという・・・これだけの作業をマウスを使ってあっちのソフトからこっちのソフトへ行ったり来たりは、何回もやっているとむきゃーとなりますね^^;

emacsから英辞郎を利用する


上のだけではアレなんで英和辞書もemacsから使えるようにします。英辞郎の辞書データは別途用意してください。
手順としては、英辞郎のテキストファイルを sdic-eijiro パッケージに含まれているスクリプトでsdic形式に変換し、sdic.elを導入する、です。

インストール

sudo apt-get install sdic-eijiro sdic
  • 辞書の変換
  • 以下手順メモ
    mkdir ~/sdic
    cd ~/sdic
    nkf -S -e EIJIRO98.TXT | perl /usr/share/sdic/eijiro.pl > eijiro.sdic
    nkf -S -e WAEIJIRO98.TXT | perl /usr/share/sdic/eijiro.pl --waei > waeijiro.sdic
    sudo ln -s ~/sdic/eijiro.sdic /usr/share/dict/eijiro.sdic
    sudo ln -s ~/sdic/waeijiro.sdic /usr/share/dict/waeijiro.sdic
    ~/.emacsに、
    (global-set-key "\C-cw" 'sdic-describe-word) ;;英辞郎で翻訳する。

    を追記して、キーバインドをC-cw に設定。試しに英単語上でC-cwしてみると見事に訳が。

ただ検索速度が遅すぎたので、sufary を導入してみました。
sudo apt-get install sufary
をした後に、再度
sudo apt-get install --reinstall sdic-eijiro
してみたところ、自動的にeijiro.sdic.arryが作成されました。結構時間がかかります。
その後特に何も設定せずともsufaryが効いているみたいで、検索速度が飛躍的に早まり、快適に使えるようになりました♪


これでemacsで快適な翻訳作業が構築完了。試しに
msgfmt -v ja.po -o ja.mo
sudo cp ja.mo /usr/share/locale-langpack/ja/LC_MESSAGES/dar.mo
してみて無事darの日本語化が成功。
  • 英文章を翻訳したい時は、
    翻訳したい箇所を範囲選択し、おもむろにC-xt
  • 英単語を翻訳したい時は、
    翻訳したい単語の上にカーソルを持っていき、おもむろにC-cw
ん〜〜〜便利だぁw

オマケの翻訳中のdar画面
●20070902追記:
apt-cache search sdic してみると、
sdic - Emacs-Lisp program to view dictionaries
sdic-edict - EDICT dictionaries for sdic (installer)
sdic-eijiro - Installer for EIJIRO dictionaries for sdic
sdic-gene95 - Installer for GENE95 dictionaries for sdic

と出てきます。ubuntuの日本語版に標準で入っているGjiten日本語辞典が使用している英和辞書の形式がEDICTなので、sdic-edictパッケージを導入すればemacsから辞書の再利用ができるかもしれません。わざわざ英辞郎を用意するなんて・・・という人にはお薦めかもしれません。

2007年8月29日水曜日

Darの簡単な使い方

Darの簡単なチュートリアル のつもり

Darについてはこちら

  1. テスト用の作業ファイルを作る
    mkdir dar-test
    cd dar-test
    touch aaa.txt bbb.txt ccc.txt
    echo "aaaaaaaaaaa" > ccc.txt
    cd ~/

  2. バックアップしてみる
     dar -v -R ~/ -c test-full -g dar-test/
    -cはアーカイブ名を指定します。
    -vは詳細表示してくれます。-Rはバックアップする時のルートディレクトリを設定します。-gはバックアップするディレクトリを指定します。

  3. 確認する

    バックアップが成功すると、-cでつけた名前の後に.1.darが付いたファイルが作られます。
    dar -l test-full
    で、バックアップされたリストが表示されます。

  4. ファイルを編集してみる。
    rm dar-test/aaa.txt
    echo "bbbbbbbbb" >> dar-test/ccc.txt
    などとして、ファイルを編集して見ます。

  5. 差分バックアップしてみる

    前回のバックアップ以降更新されたファイルをバックアップしてみましょう。
    dar -R ~/ -c test-diff -A test-full -g dar-test
    -Aオプションで、基準となるバックアップファイルを指定します。
    test-fullを基準としてそれ以降に更新されたファイルをtest-diffというファイルにバックアップします。

  6. 差分されたファイルを確認する
    dar -l test-diff
    きちんと更新されたファイルがバックアップされ、削除されたファイルには削除マークがされていますね。
    dar -l test-diff -as
    -asオプションを付けると、前回以降更新されたファイルだけを表示することが出来ます。

  7. リストアしてみる

    rm dar-test/* して、dar-testディレクトリ内をいったん空にしたら、いかのコマンドを実行してみてください。
    dar -x test-full

    1. 確認してみる
      ls -l dar-test
      合計 4
      -rw-r--r-- 1 hoge hoge 0 2007-08-27 23:40 aaa.txt
      -rw-r--r-- 1 hoge hoge 0 2007-08-27 23:40 bbb.txt
      -rw-r--r-- 1 hoge hoge 12 2007-08-27 23:40 ccc.txt
      削除したaaa.txtがあることや、ccc.txtのサイズに注目してください。

  8. 差分ファイルをリストアしてみる
    dar -wa -x test-diff
    -waは問い合わせを抑制します。
    1. 確認してみる
      ls -l dar-test
      合計 4
      -rw-r--r-- 1 hoge hoge 0 2007-08-27 23:40 bbb.txt
      -rw-r--r-- 1 hoge hoge 22 2007-08-27 23:59 ccc.txt
      削除したaaa.txtが削除されています。ccc.txtも編集したサイズになっています。最新の状態に復元されました。


とまぁ駆け足で説明してみましたがどんなものでしょう。大体の感じが掴めたでしょうか。
よく使うオプションは~/.darrcに記述できますのでいろいろ試してみてください。
以上。

2007年8月28日火曜日

Darで大事なデータをバックアップ

linuxではtarで適当に固めてバックアップ、というのが一番多い気がしますが、少数のファイルをバックアップするならそれで問題ないかもしれませんが、tarは、もし書庫が壊れたら、壊れた場所以降のファイルが取り出せない! という致命的な欠点があります。本格的なバックアップには使えません。

そこで、Darを使います。Darはバックアップのために作られたソフトで、増分・差分バックアップにも対応し、書庫の圧縮にも対応しています。また、バックアップしたくないファイルやディレクトリの指定圧縮したくないファイルの指定、さらには拡張属性のバックアップにも対応しています。

インストール

sudo apt-get install dar

オプション

よく使いそうなオプションを抜粋
-cバックアップファイルを作ります。ファイル名を指定します
-xバックアップから展開します。ファイル名を指定します
-lバックアップされたリストを表示します
-as-lでリスト表示時に更新されたファイルだけ表示する
-tバックアップファイルが壊れていないかテストします
-dバックアップファイルとバックアップ元との比較を行います
-z[level]gzipで圧縮します。デフォルト圧縮レベルは9
-y[level]bip2で圧縮します。デフォルト圧縮レベルは9
-Z圧縮時、圧縮しないファイルを指定します
-m圧縮をするファイルの最低サイズを指定。指定以下のサイズのファイルは圧縮されない。デフォルトは100バイト
-s指定したサイズでファイルを分割します。
-S分割するとき、最初の分割ファイルのサイズを指定します
-X除外するファイルを指定します
-P除外するディレクトリを指定します
-gバックアップするディレクトリを指定します
-R pathこのパスをルートディレクトリとみなします
-D除外した結果空になったディレクトリをバックアップする
-G指定したファイルにバックアップ情報、カタログデータを書き出します
-A差分バックアップなどの時に参照するファイルを指定します
-,
CACHEDIR.TAGのあるディレクトリを保存しない


簡単な使い方



使う上でのちょっとしたTips


  • ファイル名の命名規則について
    バックアップファイル名には規則性を持たせた方がいい。
    例えば、
    フルバックアップは名前に-full
    差分ファイルには-diff
    増分ファイルには-incを付ける。

さらに`date +%Y%m%d`としてファイル名に日付を付与しておくのもいいだろう。 組み合わせて、ベース名-full-`date +%Y%m%d`とすれば、ファイルを判別するとき便利になるでしょう。
  • カタログを作る
    バックアップする時に、-G path/カタログファイル名とすることで、バックアップしたファイルのカタログリストを作ることが出来ます。
    バックアップファイルをDVD-Rに焼いた後でもカタログファイルを参照することで、わざわざDVD-Rをマウントしてリスト表示しなくても確認できるようになります。

2007年5月18日金曜日

KDar を入れてみる

KDar高機能なバックアップソフトDarをGUIで操作できるフロントエンドです。
ubuntu用にはFeisty用のパッケージが用意されていなく、dapper用のリポジトリにはあるようです。
ということで実験的に入れてみます。
必要なパッケージは、kdarのパッケージととlibdar3c2aです。
それぞれダウンロードして、インストールします。
sudo dpkg -i libdar3c2a_2.2.4-2ubuntu2_i386.deb
sudo dpkg -i kdar_2.0.6-0ubuntu3_i386.deb


バックアップファイルを作成するときに、ウィザード形式で作成できるなど、なかなかユーザーフレンドリになっていて、エンドユーザでも楽にバックアップ作業が出来そうな感じです。
が、日本語のファイル名は文字化けして表示されてしまいます。
Darで表示する限りきちんと日本語表示されますので、Kdarの画面表示だけの問題かな。
バックアップ作業は一度設定し、スケジュールを組めば後は定型作業になるし、Darでコンソールで行えばいいので、とりあえず、実験終了。


参考

Only Ubuntu Linux

2007年5月17日木曜日

smbfsの2GB制限

darのテストをかねて、homeディレクトリをsmbfs経由でXPのNTFSドライブに
dar -c /media/backup/home-back -g ホームディレクトリ
としてバックアップファイルを書き出す作業をしていたところ、エラーを吐いて止まってしまった。
tarでテストしたときはエラー表示が出ず、成功したものと思い込んでいた・・・orz
tarでもdarでもどうやらバックアップファイルのサイズが2GBで止まっている模様。
2GB以上のファイルは作成できない?
試しにNTFS→smbfs経由→ext3でファイル作成したが2GB以上のファイルが作成できた。NTFSは2GB制限なんてないから、問題はsmbfsだろう。
 調べてみたら、デフォルトでは2GB以上のファイルは作れないようになっているみたい。FAT向けの制限? FAT32だとそうだっけ?
smbmount --help でオプション調べると、
lfs(large file system support)
を付けると2GB制限がなくなるらしい。
ということでfstabでオプションに lfs を追記してリマウント。
書き込みテストして、無事2GBオーバーのファイルが生成された。