おもこん

おもこんは「思いつくままにコンピュターの話し」の省略形です

バックアップについて

今日はバックアップについて書きたいと思います。バックアップは本来定期的にすべきですが、そうでない人が多いでしょう。それでも再インストール、とくにクリーンインストールをするときは、どんな人でもバックアップを取ると思います。(クリーンインストールとは、全てのデータを消去して新たにインストールすることです)。バックアップの方法にはどんなものがあるでしょうか?

  • コピーコマンドなどを使う
  • バックアップ用のプログラムを作る(コピーを体系的に行う)
  • バックアップ用のツールを使う

ざっと考えただけでもこのような方法があります。これらについて考えてみましょう。

これらの方法で共通しているのは、ファイルの内容は確実にコピーされる、ということです。しかし、ファイルの属性についてはそうではありません。 ファイルの属性とは、作成日時、更新日時、所有者、パーミッション(どのユーザが読み書きできるか)などです。これらがコピー先で保存されるかどうかに影響するのは、

  • コピーに用いるコマンド(アプリケーション)
  • コピー先のデバイスのフォーマットの種類

です。とくに2番目は見落としがちで、FAT系のフォーマットでは所有者情報とパーミッションは保存されません。ですから、単純なファイルコピーではこれらの情報は失われてしまいます。ファイル属性は、あまり問題にならないことが多いですが、時には大きな問題になることがあります。例えば、gitではファイルの中身が同じなのに属性が違っているとファイルに変更が加えられたと判断されることがあります。

コピー先のデバイスの種類によらず、属性情報も保存するには、

  • tarを使う
  • UBUNTUに付属のバックアップというアプリを使う

方法があります。

バックアップアプリはあるフォルダ以下をまるごとバックアップするには便利です。しかし、ファイルを選別してバックアップしたい場合には、細かい設定ができません。その場合はプログラムを作成し、tarをその中で呼び出すようにすると良いです。

今のところ、カスタマイズと属性保存の両方が可能な「tar + 自作プログラム」が最も有力な手段だと思います。

(追記 2022/6/2)

重要なことを書き忘れました。 「コピー先のデバイスのフォーマットの種類」で追加すべきことがあります。 それは、FATなどには1つのファイルの大きさの最大値があり、それを超えるファイルは作れません。 tarファイルがあまりに大きくなるとその制限に引っかかります。 そのため

  • 適度の大きさのディレクトリ単位でtarファイルを作るようにする
  • 普通はホームディレクトリの1つ下のディレクトリを単位とすると良いと考えられる。
  • ダウンロードしたアプリなどは(1)サイズが大きくなりがちで(2)そもそもダウンロードできるのでバックアップする価値が低い、ということから対象外とするのが良い

ということがいえます。

バックアップはただ丸ごとやるのではなく、対象を絞り、分割すると効率的になります。 その点でも、時々の状況に応じたバックアップ用プログラムを自作するのは理にかなっているといえます。

(追記 2022/6/3)

このブログに書いた考えをもとにバックアップとリストアのプログラムを作りました。 Githubに公開しました。 興味のある方はご覧ください。