ラベル バックアップ の投稿を表示しています。 すべての投稿を表示
ラベル バックアップ の投稿を表示しています。 すべての投稿を表示

2008年10月15日水曜日

Emacsの保存関係の設定

 Emacs には自動保存機能がデフォルトで有効になっています。
 ファイルを編集すると、ファイル名の前後に「」を付けたバックアップファイルが作成され、随時編集内容がこのファイルに保存されていきます。
 このため何らかの理由でファイルを保存しそこなったとしても、このバックアップファイルからリカバリできる仕組みになっています。
 この自動保存はデフォルトでは30秒ごとか、300打鍵ごとにオートセーブされるようになっています。
 間隔が長い、あるいは短かいと感じたのなら調整しましょう。それぞれ、
(setq auto-save-timeout 30)   ; 自動保存する間隔。秒。
(setq auto-save-interval 300) ; 300打鍵ごとに自動保存
の値を変えることで変更出来ます。

簡易履歴機能

 Emacsでは簡易的ながら複数の世代に渡るバックアップの履歴を取ることが出来ます。つまり、前の編集内容。さらにその前の編集内容、さらにさらに・・・
 編集して保存して、やっぱり以前の状態に戻したい。さらにはその前の編集した内容の方がよかったので、なんていうことにも対応出来て便利です。
 この世代バックアップファイルは、ファイル名の末尾に「.~1~」のようなサフィックスを付けられて保存されていきます。番号は自動的に増えていきます。
 バックアップファイルは元のファイルを同じ場所に保存されいきます。しかしこれではバックアップファイルだらけになって少々鬱陶しいのでバックアップファイルは専用ディレクトリを作ってそこに全部保存されるようにします。

(setq make-backup-files t) ; バックアップファイルを作成する。
;;; バックアップファイルの保存場所を指定。
(setq backup-directory-alist
(cons (cons "\\.*$" (expand-file-name "~/.backup"))
backup-directory-alist))

(setq version-control t) ; 複数のバックアップを残します。世代。
(setq kept-new-versions 5) ; 新しいものをいくつ残すか
(setq kept-old-versions 5) ; 古いものをいくつ残すか
(setq delete-old-versions t) ; 確認せずに古いものを消す。
(setq vc-make-backup-files t) ; バージョン管理下のファイルもバックアップを作る。
 これでバックアップファイルは~/.backup/以下に保存され、最新の世代から5つと、古い方から5つ残されていきます。

保存時実行属性付与

 定番ネタです。
 シェルスクリプトを作って保存したときに、いっしょに実行属性を付けてくれます。地味ながらも大変有り難い機能です。
 こちらを参考、というか丸写し(^_^;)

;;;====================================
;;;; シェルスクリプト保存時にchmod +x を自動実行する
;;;====================================
(defun make-file-executable ()
"Make the file of this buffer executable, when it is a script source."
(save-restriction
(widen)
(if (string= "#!" (buffer-substring-no-properties 1 (min 3 (point-max))))
(let ((name (buffer-file-name)))
(or (equal ?. (string-to-char (file-name-nondirectory name)))
(let ((mode (file-modes name)))
(set-file-modes name (logior mode (logand (/ mode 4) 73)))
(message (concat "Wrote " name " (+x)"))))))))
(add-hook 'after-save-hook 'make-file-executable)


 以上、地味ながらも確実にEmacsの使い心地を向上させてくれる大事な保存関連の設定でした。

2008年7月18日金曜日

HDDが吹っ飛んだ・・・

いつものようにアップデートマネージャーを起動したらディスクIOが100%になったまま帰ってこない。
dbでも壊れたか? と思ってdmesg みてみたらATAデバイスでエラーメッセージがいっぱい。
 んでま、結局いろいろいじってしまって(下手にfsckをかけてしまった)/etcいかが綺麗さっぱり消えてしまったorz
 fsck -cyf オプションでチェックしてみたら、バッドブロックが61個もorz
 なんでかなー振動与えていないし、熱かなーうーん、心当たりがないだけに不良セクタ発生はショック。まー寿命かもしれない・・・

 んで、さらにアホなことに完全なバックアップ取ってなかったの><
 ということですっぱり潔く再インストール。いくつかの/etc以下の設定ファイルはchangetrackで履歴管理していたのでセーフ。
 再インストールしてみてわかったのはubuntuのすばらしさ。windowsだとこうは簡単に環境復帰できない。ubuntuだとapt-get叩くだけでほぼすべてのアプリがインストールできて、設定ファイルもバックアップからコピーすればいい。これだけで元通りになる。これはすごいことだよね。

 とはいえちゃんとしたバックアップしていない私もアホなのだけれど。
うーんDarにしようかrsyncにしようか、changetrackを拡大して使うか。どうしよ。

Quick Lookup:

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月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年8月24日金曜日

パスワードファイルを定期的にgmailにバックアップ

パスワードなどを書き溜めたGnuPgファイルを普段emacsでeasypgを使って管理している。こうするとemacs上からgpgファイルを透過的に扱うことが出来るので大変便利だ。
大切なファイルなので複数のでメディアにバックアップしているのだけれど、gmailに定期的にアップすればストレスなく快適じゃない? ということでやってみた。

まず、添付ファイルをコマンドラインから送信できるメールコマンドを探した。意外とない。お手軽に手っ取り早くやりたかったのでmpackコマンドを使用することにした。日本語が使えないが、今回の目的には全然問題ない。

インストール

sudo apt-get install mpack

使い方

mpack -s "件名" 添付ファイル名 宛先
で送信できる。あ、MTAを入れていないと無理です。ubuntuにはデフォルトで入っていません。うちにはpostfixを入れていた。

あとは
#!/bin/sh
#

if [ ! -e "pass.gpg" ]; then
exit;
fi

mpack -s "password backup `date +%x%X`" pass.gpg [email protected]
などとしてシェルスクリプトを書いて、/etc/cron.daily に放り込もうかと思ったが、個人的なファイルなので、crontab -e で毎日一回実行するようにして終わり。
あとはgmailでフィルタ設定でゴミ箱にでも振り分けておけば、古いバックアップファイルは自動的に削除されていく。

2007年7月3日火曜日

再インストール時に APTonCD

APTonCD/var/cache/apt/archives/にキャッシュされたdebパッケージをバックアップ・リストアしてくれるツール。
なにが便利な点かと言うと、ubuntuを再インストールする際、ubuntuを入れてからアップデートや追加で入れたパッケージを再び入れる場合に再度ネット経由で取ってくる必要がないということ。これは時間的なコストを考えると地味ながらも大変うれしい。

インストール

sudo apt-get install aptoncd
インストールすると、メインメニューのシステム→システム管理から起動できる。
バックアップはISOイメージの作成からライティングまで行ってくれる。
リストアは焼いたメディア、イメージファイル、リポジトリラインの追加など行ってくれるようだ。
メタパッケージの作成オプションがあるけど、こいつを使うと一括でインストしてくれるのかな? だとするとかなり楽になるね。





2007/07/10:追記

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