Linuxでtarを使ってファイルをバックアップする。

Linuxではファイルをバックアップするのに、tarコマンドを使うと便利です。tarコマンドの使い方を書いてみます。

■ファイルをアーカイブする。
$ tar cvf アーカイブファイル名 アーカイブするディレクトリ名

■アーカイブファイルの中身の確認。
$ tar tvf アーカイブファイル名

■アーカイブファイルを展開する。
$ tar xvf アーカイブファイル名

tarコマンドのオプションですが、以下です。

  • c: アーカイブファイルを新規作成する。
  • t: アーカイブファイルの中身を表示する。
  • x: アーカイブファイルの展開を行う。
  • v: 処理の詳細情報の表示をする。
  • f: アーカイブファイル名の指定をする。
  • -C: 指定したディレクトリに移動した後にアーカイブを実行する。

アーカイブするファイルは1つのディレクトリ配下に配置してそのディレクトリごとアーカイブします。ディレクトリにまとめなくても「*」や「?」のワイルドカードを使って複数ファイルを指定してまとめてアーカイブすることもできます。

ここで、注意点があります。
アーカイブする際に指定するディレクトリはcdコマンドでそのディレクトリがある場所まで移動して相対バスで指定することです。もしくは「-C」オプションを使います(後述)。展開をする際も展開をしたい場所(ディレクトリ)まで移動してから行います。

以下の例でtarをやってみます。/home/user/work 配下にcccディレクトリを作りアーカイブしたい003.txt、004.txtを配置します(図1)。

図1

ccc1.tarという名前のアーカイブファイルを作成してdddディレクトリ配下で展開したときの作業ログです。

dddディレクトリ配下に展開されたファイルは以下のようになっています(図2)。

図2

なお「-C」オプションを使う場合はアーカイブする際に「tar cvf ccc1.tar ccc -C /home/user/work」とやります。

先ほどアーカイブするディレクトリは相対パスで指定すると書きましたが絶対パスで指定した場合にどうなるかをやってみます。図1と同じ状況でcccディレクトリを絶対パスで指定してccc2.tarという名前のアーカイブファイルを作成します。そしてccc2.tarファイルをdddディレクトリ配下で展開します。

アーカイブしたときに「tar: メンバ名から先頭の `/’ を取り除きます」のメッセージが出力されています。これはルートディレクトリを表す先頭の「/」をコマンドが自動的に削除したことを示しています。そのためdddディレクトリ配下では以下のような構成でファイルが展開されます(図3)。

図3

tarコマンドが先頭の「/」を取り除いている理由は、展開したときに誤ってすでに存在しているファイルを上書きしてしまう恐れがあるためそれを防ぐ目的と思われます。

最後に、アーカイブファイルの圧縮と解凍コマンドを書いておきます。バックアップするアーカイブファイルの容量が大きい場合は圧縮しておくほうが良いかと思いますので。

■ファイルを圧縮する。
$ gzip ファイル名

■ファイルを解凍する。
$ gunzip ファイル名

gzipコマンドで圧縮を行うと「.gz」の拡張子がファイル名に付与されます。解凍する際は「.gz」の拡張子がついたファイルを対象にgunzipコマンドで解凍をします。

CSSのボックスモデル(CSSで画像を中央にする方法)

Webで画面レイアウトをいじくろうとしたときに、margin、border、padding がどこの部分だっけ?と忘れてしまうのでボックスモデルと呼ばれるものを書いてみた。

CSSでは内容(Content)に対して幅と高さの指定ができて、余白部分がpadding、border、marginとなるんだなと。ただこのボックスモデルはブロックレベル要素には効くのだがインライン要素には効かないときがあるらしい(後述)。

[広告]

ブロックレベル要素とは要素の前後に改行が入って要素同士が縦に並ぶもの。インライン要素とは要素の前後に改行が入らず要素同士が横に並んでいくもの。HTMLタグでいうと以下です。

ブロックレベル要素
・div
・h1〜h6
・p
・ul, ol, li
・table
・form
 など

インライン要素
・a
・span
・img
・label
 など

先ほどインライン要素ではボックスモデルの指定が効かないときがあると書きましたが、具体的に言うと「marginは左右は効くが上下は効かない」、「paddingは他の要素の領域を考慮しないので重なるときがある」らしいです。なので、インライン要素でmargin、paddingを使うときは注意が必要そうです。

[広告]

初歩的なんですけれども、、、画像を中央にしたくって、CSSをいじくったときの話。
div(ブロックレベル要素)の中にあるimg(画像)を中央にするにはCSSを以下のようにすればうまくいきました。

■HTMLの内容
<div class=”abc”>
  <img ・・>
</div>

■CSSの内容
.abc { text-align: center;
   margin-left: auto;
   margin-right: auto}

margin-leftとmargin-rightをautoにしておけば画像が中央にいくとばかり思っていたのですが、それだけではdivのブロック領域が中央にいくだけで画像は真ん中より少し左によってしまいます。画像自体も真ん中にするにはtext-alignを使う必要がありました。text-alignは文字列に使うものだと思っていましたが画像にも使えるみたいです。もう少し言うと、text-alignはインライン要素に使えるようです(ブロックレベル要素には使えない)。