anchor
TimeMachineのバックアップ容量を大幅に少なくするTips
この記事は効果が確認できないために削除しました。
anchor
Time Machineの振る舞いはやはりよくわからない
先日のTimeMachineのバックアップ容量を大幅に少なくするTipsという記事に対して「t0mori」さんから「Time Machineは"/private/var/vm"をバックアップしていないのでは?」という指摘をいただいた。
確かにその通りだったのだが、すると先日の2GBのバックアップが20MBに減らせたように見えたのは何だったのか、その後検証していた。
その間誤解を与えそうなので当該記事は削除していた。
結論から書くとどうもよくわからない。
「t0mori」さんのご指摘通り、Time Machineは"/private/var/vm"をバックアップしていない。
とすると毎回2〜3GBものバックアップは一体どこをコピーしているのだろうか?
例えばVMwareを起動していない日に、テキストの上書きなどで数百KBから数MBのファイルしか変更していない時でも(実際昨日がそれに当たるのだが)、Time Machineはやっぱり2GBのバックアップをはじめる。
Dolipoのキャッシュも300MBに絞っている。
そして一度中断してもう一度Time Machineにバックアップをさせようとすると今度は数百KBのバックアップに変わる。
どうもこのTime Machineの振る舞いに騙されたようだ。
やはりこの2GBのバックアップファイルの中味は何なのかという疑問が残る。
どなたか情報をお持ちではないだろうか?
例えばローカルアカウントのここにキャッシュが概ね集約されている
Time Machineで"/private/var/vm"と"~/Library/Caches"、
"/Library/Caches"等を除外項目に指定する
しかしFinderから覗いてもTime Machineに入っても・・・・
vmやCache等のフォルダはそういう設定をしているかしていないかにかかわらず空だ
こういうフォルダをバックアップの対象から外しているようだ
しかしTime Machineは今日も2GBのバックアップを取る
VWwareやPhotoshop等の大物アプリを起動していないくてもだ
それを中断して再度バックアップするとなぜかバックアップ容量は500KBに激減する
このことからTime Machineは一度vm等をバックアップして
削除するような変な動きをしているんじゃないかという気がする
つまりこの設定は無意味?あるいはバックアップにかかる時間を多少短縮するだけ?
よくわからないがCacheフォルダ以外のところに散らばっているCache
(DolipoやDashboardなどのCache)をこまめに設定することは意味があるように思った
わずかな容量だが毎日のバックアップが蓄積すると月に数GB程度の節約にはなると思う
anchor
Pref SetterでTime Machineのバックアップ除外領域を知ることができる
Pref Setter(Freeware)
OS10.3Panther対応
OS10.4Tiger対応
OS10.5Leopard対応
プロセスコードの設定ファイルである.plistファイルに何が書かれているかを分かりやすく表示してエディットも可能にしてくれるアプリ。
こういう.plistファイルのエディターアプリはいくつかあった気がするがこれは表示が整理されていて分かりやすい。
先日のTime Machineは何を保存しているのかよう分からん騒動以来いろいろな皆さんからお知恵をいただいている。
ここで改めて皆さんに感謝したい。
そのなかで「plist」様からいただいた情報がこのアプリ。
これで見るとTime Machineが何を保存しないかというのが見える。
Time Machineの設定ファイルは、
"/Library/Preferences/com.apple.TimeMachine.plist"
に有って、このPref Setterで見ると
System Preference
の項目に見える。
ただしここを開いてみても見えるのは主にリスト設定したもの、事後に設定された変更が中心でこれがすべてなのかどうか分からない。
ここでBBSにもうひと方、「通りすがり」さんからも情報をいただいた。
バックアップの除外項目は
/System/Library/CoreServices/backupd.bundle/Contents/Resources/StdExclusions.plist
という別の.plistファイルを開くと分かるという。
これはコアサービスの「バックアップデーモン」というサービスのバンドルの中の設定ファイルだ。
そういえばTime MachineはGUIのフロントエンドの姿で、その実態は「backupd」というようなプロセスだという話を聞いたことがあるようなないような・・・
さっそく開いてみると確かにあったよ、ありました。
最初に話題にした
"/private/var/vm"
も
"~/Library/Caches"
もこのリストに含まれている。
つまりこれらをわざわざ除外リストに登録するのは意味がないということだ。
むしろ大きなファイルを一時的に置いておく置き場みたいなところを、どうせバックアップを取るからTime Machineで、バックアップを取ってくれるのはスペースと時間の無駄だ・・・というディレクトリをこの除外リストには追加すべきということか。
余計なスペースを浪費しそうなところはちゃんと除外されていることが分かった。
とんだおっちょこちょいから、間違ったTipsを書いてしまい皆さんに誤解を与えたことをお詫びしたい。
でも今回はなかなか勉強になった。
Pref Setterはアプリの設定ファイルである.plistファイルの
内容を分かりやすく見せてくれるエディタ
地裁フローティングウインドウのリストから見たい.plistファイルを選ぶ
ちなみに今回話題のTime Machineの設定ファイルはSystem Preferenceの項目にある
見るだけなら良いがシステム系のplistファイルはグレーアウトしているので
エディットする場合はこの南京錠アイコンをクリックしてロックを解除する
それぞれの項目の詳細はマウスオーバーで待っていると吹き出しウインドウで見える
ただここで見えているのは設定のリストで追加したものが中心のようだ
そこでBBSに情報をいただいたのはこちらの「backupd」
このデーモンの中の「StdExclusions.plist」をPref Setterにドロップして開く
するとこの通りTime Machineのバックアップから
除外されている領域のリストがずらっと出てくる
件の"/private/var/vm"もちゃんとリストに入っていた
つまりSwapファイルはバックアップから外されているということだ
ちなみにシステム環境設定の「Time Machine」のペインから除外領域を設定する方法をおさらい
オプションボタンをクリックしてリストを表示したら下の「+」ボタンで領域を追加する
場所を開くダイアログで除外するファイル、領域を指定する
下の「不可視項目を表示」で不可視領域も指定できる
ということで一通りキャッシュ関係も指定したが今日も元気に2GBのバックアップ
何をバックアップしていないかは分かったが何が2GBもかさばっているかは相変わらず分からない
ということで勉強にはなったが、Time Machineのバックアップをコンパクト化するという試みはうまくいかなかった。
ちなみに以下にPref Setterで判明したStdExclusions.plistのバックアップ除外領域のリストを転載しておく。
ContentsExcluded
/Volumes
/Network
/automount
/.vol
/tmp
/cores
/private/tmp
/private/Network
/private/tftpboot
/private/var/automount
/private/var/log
/private/var/folders
/private/var/log/apache2
/private/var/log/cups
/private/var/log/fax
/private/var/log/ppp
/private/var/log/sa
/private/var/log/samba
/private/var/log/uucp
/private/var/run
/private/var/spool
/private/var/tmp
/private/var/vm
/private/var/db/dhcpclient
/private/var/db/fseventsd
/Library/Caches
/Library/Logs
/System/Library/Caches
/System/Library/Extensions/Caches
PathsExcluded
/.Spotlight-V100
/.Trashes
/.fseventsd
/.hotfiles.btree
/Backups.backupdb
/Desktop DB
/Desktop DF
/Network/Servers
/Previous Systems
/Users/Shared/SC Info
/Users/Guest
/dev
/home
/net
/private/var/db/Spotlight
/private/var/db/Spotlight-V100
UserPathsExcluded
Library/Application Support/SyncServices
Library/Caches
Library/Logs
Library/Mail/Envelope Index
Library/Mail/AvailableFeeds
Library/Mirrors
Library/PubSub/Database
Library/PubSub/Downloads
Library/PubSub/Feeds
Library/Safari/Icons.db
Library/Safari/HistoryIndex.sk
anchor
Time Machineのバックアップをコンパクト化するTips
今度こそ。
といってもいろいろリサーチしているうちに見つけたのだが、バックアップ容量をソフトウエア的に減らすことはできないのだが、システムのUIにちゃんとそういう機能があることが分かった。
方法はキャプションを参考してほしいのだが、要するに要らない古いバックアップ、不要なバックアップを手動で削除するという方法。
なおこうした手順を踏まないで、強引にFinderからTime Machineのバックアップの
Backups.backupdbに入ってバックアップファイルを削除したりすると、Time Machineが「アクセス権がないためにバックアップを継続できません」というような趣旨のアラートを出してちゃんと動かなくなるそうだ。
Time Machineのバックアップ領域はFinderから覗くとすべてのファイルが実体のように見えるが、実際にはその多くがシンボリックリンク(UNIX世界のエイリアスのようなもの)で、各ディレクトリに保存されているのは実体のないシンボリックリンクと差分ファイルだけという構造になっている。
(後日注:BBSに「SakiPapa」様より書き込みをいただいた。Time Machineで使われているのはシンボリックリンクではなくアーカイブディレクトリリンクという一種のハードリンクなのだそうだ。
この件、後日詳述)
たまたまオリジナルの方を削除してしまうと、リンクの体系が壊れてしまう。
こういうとこらもFinderで単純に削除をしてはまずい理由だ。
Time Machine領域はあまり手を突っ込まない方が良いということらしい。
古いバックアップ、要らないバックアップの削除はFinderからやってはいけない
Time Machineに入って要らないバックアップを選択し「アクションボタン」をクリック
ここで「すべての◯◯のバックアップを削除」を選択するとすべての日時の
そのフォルダ(ファイル)のバックアップが一斉に削除される
日時を選んで「バックアップを削除」をクリックすると
今選んでいる日時のバックアップだけがすべて削除される
削除にはパスワードを要求される
シンボリックリンクや差分ファイルを置き換えながら
削除するという作業手順のため削除にはしばらく時間がかかる
完全に消えるまで当該フォルダはこのように色が薄くなっている
おかげで9GBしか無かったバックアップディスクの空き容量が26GB以上に増えた
anchor
Time Machineの振る舞いはやはりよくわからない〜解決編〜バックアップ容量がようやくコントローラブルになってきた
先日Time Machineの振る舞いはやはりよくわからないという記事以来、バックアップ容量を削減すること自体には成功したが、Time Machineのバックアップが毎回2GBもの容量を書き足す原因が相変わらず不明だった。
このことについてBBSに「oliza」さんから情報をいただいた。
「タイムマシーンのバックアップでは、パラレルズとマイクロソフトのEntuorageが癌です。なんでそんなの使ってるのと言われそうですが職場でmacを使うためしょうがない選択なんです。こうしたソフトはdataを独自のimage fileみたいなので一括して扱っているので、ばかでかいdataがほんのちょっとの変更で別ファイルとして記録されてしまいます。 2GBの件ですがこうしたお行儀の悪いソフトが動いてませんか?」
とのことで、私はParallelsとEntuorageは使っていないし、VMware Fusionを起動していない日でも同じように2GBバックアップするのが不思議だったのだが、この「Entuorageのイメージファイル」という話がヒントになった。
私の環境ではモバイルのMacBookで、個人情報や仕事のメモ、ドキュメントを全部一元管理している都合上、すべてのテキストファイルをExcesで暗号化している。
また仕事のメモ類はすべてMacJournalに書き込んでいる。
資料類はこのどちらかに保存しMacJournalなどはjpegもpdfも皆貼り込んでいるため、そのデータファイルの大きさが
Excesで1.7GB、
MacJournalで300MB
になっている。
ぴったり辻褄が合う大きさだ。
そこでさっそく検証。
この2つをバックアップ除外リストに登録してバックアップをしてみるとバックアップ容量は見事160MBにまで激減した。
この2つをTime Machineの過去のバックアップから削除してみた。すると40GBもの空き容量を確保することができた。
2GBをおよそ20日間バックアップし続けるとおよそ40GBでこちらも計算上辻褄が合う。
つまりExcesもMacJournalも保存ファイルはひとつの大きなファイルだったりイメージファイルのVaultだったりするので、数行のメモを追記するだけでも1.7GBとか300MBの新しいファイルとしてTime Machineは判断してしまい、丸ごとバックアップするということを毎回やってしまうわけだ。
これに対する対処法は、下記のように時々過去のバックアップを削除して最新のファイルだけをバックアップすることで、問題を解決できる。
本当は両方ともTime Machineの除外リストに登録してしまえば良いのだが、これこそ何かあったら「しまった!」という種類のファイルなので、Time Machineの恩恵が一番考えられる領域だ。
完全に外してしまう方が意識しないで使えるがやはり置いておくことにした。
BBSにいただいたご指摘でピンと来たのだが
仕事や個人情報のテキストファイルを保存しているExcesで暗号化しているイメージファイルが
毎回「新しいファイル」としてバックアップされているらしい
それとMacJournalも仕事や個人情報などあらゆるメモ、webの情報を貼付けたりなど
毎日のように使っているため数行の追記でも全く新しいファイルと認識されているらしい
この合計がちょうど2GBになる
そこで試しにシステム環境設定のTime Machineの項目で
この2つをバックアップ除外リストに追加してみる
するとTime Machineの今回のバックアップ容量は160MBまで激減した
例の2GB問題の原因はこの2つのファイルだった
そこでTime Machineに入って先日のTipsの方法でExcesのバックアップを削除してみる
それとMacJournalのバックアップも削除する
削除前のTime Machineのボリュームの空き領域は12GBだったが・・・
この2つを削除すると53GBに空き容量が増えた
2GBを20回毎日バックアップしていたと考えると計算上も辻褄が合う
ただこの毎日仕事などで使う領域はバックアップがないと
「あっ!しまった!!」ということになるかもしれないので
やはりTime Machineのバックアップからは外さないことにした
時々過去のバックアップを削除するということで今後も容量を確保することにした
それでも40GBのゲインは大きい
anchor
Time Machineのバックアップをコンパクト化するTipsに誤りがあったので訂正
今度こそ終息と思ったTime Machine問題はまだまだ続きがあった。
といっても引き続きトラブルが起こったのではなく、私の記述に一部間違いがあったということだ。
Time Machineのバックアップ領域に指定しているボリュームを覗くと
Backups.backupdb
というディレクトリが第1階層に見える。
その中をのぞくと日付順にフォルダが並んでいてさらにその中にLeopardの起動ボリュームと同じ名前のフォルダが見える。
その中にはそれぞれその当時の起動ボリュームとそっくり同じものが同じ場所に保存されている。
これがTime Machineの驚くべき内容で、見えるままに表現すると過去にさかのぼってバックアップを取った回数だけ、起動ボリュームがごっそりコピーされている。
しかし実際にはそんなことはない。
例えば私のLeopardの起動ボリュームは使用済み容量だけで86GBもあり、もし一日一回、一ヶ月間単純コピーでバックアップを取ったとしたら、2580GB、およそ2.3テラバイトものバックアップディスク容量が必要になる。
最近はテラバイト単位の外付けハードディスクも珍しくなくなってきたが、それでもさすがにこれは実用的に使うには非現実的な数字だ。
実際には前回から何も変わっていないファイルやディレクトリはリンクによって、前回のファイルと同じところに結びつけられている。
そのリンクによって結びつけられている実体の元々のファイルと差分ファイルは、バックアップディスクの第1階層に
.HFS+ Private Directory Data
という不可視ディレクトリが生成されていて、その中に収納されている。
Time Machineの過去のディレクトリに見えているファイルやフォルダは実体のように見えているが、実際には実体ではなく影だ。
このリンクの特性から、私は早とちりして「これはシンボリックリンクだ」と書いてしまったのだが、これについてBBSに「SakiPapa」様から書き込みをいただいた。
これは正確にはシンボリックリンクではなく、「アーカイブディレクトリリンク」という名前を与えられたハードリンクだということだ。
ハードリンクというのは、もともとコンピュータのデータを仮想的に「一体のファイル」として見せるためにそれに名前を与え、その実体であるかのような形をディレクトリの中にあるように見せているその関連付けのことで、これがMULTICS以来のファイルシステムに依存したリンクの一形態だとのこと。
それでハードリンクに対してソフトリンクというのもあるわけで、UNIXのシンボリックリンクはそのソフトリンクの一種。
実際にはシンボリックリンクを採用する前からUNIXではハードリンクが使われていたが、最近はNTFSやHFS+でも採用されているとのこと。
あまり書くとまたボロが出そうなので聞き書きはこの程度にしておくが、もともとディレクトリとファイルの実体のデータを関連づける目的のリンクだから、ひとつのファイルに複数のリンクを張ることができて、ひとつに変更を加えるとすべてのリンクから見えるファイルに変更が反映してソフトリンク的な便利さながら、シンボリックリンクのようにオリジナルファイルを移動してもリンクがキレないというのがそのメリット。
デメリットはあまりそれを散らかしているとスパゲッティ状態になって、リンクをいくら削除しても本体ファイルが削除できないという無間地獄に落ちる可能性があるので、使い方が難しいとのこと。
そしてまさにLeopardのTime Machineはその使いどころとして最適で、リンクを張ったり削除したりをすべてシステムのファイルシステムイベントの管理に任せてユーザがマニュアルでいじったりしないために、無間地獄に陥る可能性が排除できるということらしい。
この記事を書くにあたってShiiraの作者さんのmkinoさんの
Leopard解体新書--第4回:Behind the Time Machine - page3 - builder by ZDNet Japan
という記事が大変参考になった。
また今回の一連のTime Machine祭りは、ほとんど読者の皆さんから寄せていただいたお知恵で解決した。まことに皆さんのおかげで常連読者がいるということは本当にありがたいことだ。
私個人の知恵は大したことがないが、皆さんの知恵が合わさって当サイトが充実していけるのが嬉しい。
本当にありがとうございました。
Time Machineの正体を見るために外付けハードディスクをTiger/iBookに接続した
mkinoさんの記述通りハードリンクはTigerではエイリアスとして認識している
Time Machineの領域の中のすべてのディレクトリがエイリアスであることが分かる
その実体はどこにあるのかパスを探ったところ第1階層に
.HFS+ Private Directory Dataという不可視フォルダがある
この不可視フォルダはLeopardのFinderでは「不可視領域を表示する」にしても見えない
なのでこの実体のありかに気がつかなかったのだが
Tigerからは見えるというのはmkinoさんの記事を見て知った
その第1階層の.HFS+ Private Directory Dataというフォルダを覗くと
確かに実体フォルダがずらり並んでいる
この.HFS+ Private Directory Dataの大きさを
「情報を見る」で見てみると193GBだった
バックアップの実体ファイルはすべてこの中にあってBackups.backupdbの
中に入っているのはすべてハードリンクという構造になっている