質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

14131閲覧

pg_dumpのformatで、custom, tarの使い道を教えてください

yuji38kwmt

総合スコア437

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

1クリップ

投稿2016/07/31 10:59

背景

PostgreSQL 9.5のpg_dumpについてです。

https://www.postgresql.jp/document/9.5/html/app-pgdump.html

pg_dumpのformatでは、以下の4つが選択できます。

  • plain
  • custom
  • tar
  • directory

私は常にcustomを選択しています。
理由はバックアップファイルが最も小さくなるからでえす。

質問

普段私が使わないtardirectoryの使い道を教えてください。

公式サイトには、次のように書かれています。

directory

pg_restoreへの入力に適したディレクトリ形式のアーカイブを出力します。 これは、ダンプされる各テーブルおよびblobごとに1つのファイル、さらに、pg_restoreから読み取り可能な、機械的に読み取り易い書式でダンプしたオブジェクトを記述する目次ファイルと呼ばれるファイルを持つディレクトリを作成します。 ディレクトリ形式アーカイブは標準Unixツールで操作することができます。 例えば、未圧縮アーカイブ内のファイルをgzipツールを使用して圧縮することができます。 この形式はデフォルトで圧縮されます。 また並行ダンプをサポートします。

tar

pg_restoreへの入力に適したtar形式のアーカイブを出力します。 このtar形式はディレクトリ形式と互換性があります。 tar形式アーカイブを展開すると、有効なディレクトリ形式のアーカイブを生成します。 しかしtar形式は圧縮をサポートしません。 またtar形式を使う場合、リストア時にテーブルデータ項目の相対的な順序を変更することはできません。

どちらも、「ツールで読み取ることができるフォーマット」というところまでは分かりましたが、具体的にどのようなときに使うのかが分かりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A.Ichi

2016/08/01 07:39

追加情報です、ある記事に-Fcは遅く-Fdが早いとの記述があり、2GのDBで試しましたが、同じでした。 ディレクトリ形式はテーブル単位なので差分に使えるか?はマニュアルからは見つけられませんでした。(何回かdumpして差分が取れるのは確認できましたが)
guest

回答2

0

解決済みですが、興味があったので調べてみました。
ただし、ネットの情報を自分なりに解釈しただけなので
(実際に確認はしてない)保証はいたしませんという。(^_^;

まず、アーカイブとは複数のファイルを一つにまとめること、
または、まとめたファイルのことを指します。
この際、各ファイルを圧縮するか否かは関係ありません。

で、custom は独自形式でアーカイブしたもの。
tar は tar 形式でアーカイブしたものになります。
(tar 形式のダンプは tar コマンドで中身を見れます)

さて、directory 形式ですが、ディレクトリを作成して
その配下に各テーブル等のダンプを 1ファイルづつ出力。
さらに各ファイルの情報を持ったファイルをひとつ出力。

で、上記を tar 形式でアーカイブしたものが
「tar形式で出力」された format となります。
なので、それを tar コマンドで展開すると
directory形式になる、って寸法ですな。

ちなみに、custom と directory は同時に指定できるようです。

投稿2016/08/06 23:39

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

分かる方の tar だけ答えます。PostgreSQLに限らない、Unix系OSでの一般知識です。

tar の語源は、Tape ARchiveから来てるそうです。

昔のコンピュータでテープにバックアップをする時に使ったコマンドだそうで、
複数のファイルを一つにまとめたものをアーカイブファイルと言います。

分かりやすく言うとWindowsなんかで使うZIPファイルをイメージしてもらえばいいです。
ZIPファイルの場合、普通はアーカイブと圧縮を同時に行いますが、
tarの場合、複数のファイルをまとめるだけで圧縮はしません。
(必要な場合は、別に圧縮します)

最近は、テープにバックアップすることは多くないと思いますが、
アーカイブ処理というのはよく行われるので、そのまま形式として残っています。

なので、tarで出力を行うと複数のファイルがtar形式でまとめられたファイルが作成されるということになります。(拡張子が、.tar というファイルが出来上がる)

direcory形式と互換があると書かれているので、
恐らくdirectoryをtarしたファイルが出来上がるのだと思います。

ちなみに知ってると思いますが一応書くと、directory(ディレクトリ)というのはフォルダみたいなものです。
なので、directory形式は、複数のdirectoryにファイルを分けて出力を行うのではないかと思います。
ここは、想像で書いてますので、間違っていたらゴメンナサイ。

投稿2016/08/02 13:36

Mr_Roboto

総合スコア2208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuji38kwmt

2016/08/06 11:22

詳細な回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問