私は巨大なデータベースをダンプし、ダンプを圧縮して完了するまで数時間待つ必要がないようにします。
以下からデータベースをダンプします。
pg_dump -Fc -U -v | gzip > db$(date +%d-%m-%y_%H-%M).tar.gz
これにより圧縮されたtarファイルが残ります。解凍して.tarファイルだけをインポートしたいと思います。
tar -xvf xxx.tar.gz
これによりエラーメッセージが表示されました。これはtarアーカイブファイルのようには見えません。
私の目標はpsqlを介して取得することです。何が間違っているのか分からない - によるとポストグレス文書ダンプ中に-Fcを使用して目的の形式にダンプできますか?ありがとう
答え1
圧縮されたtarファイルが残ります。
いいえ。あなた-Fc
と特定の"カスタム"ファイル形式を提供するために使用しています。これはtarではないため、tarファイルを圧縮するためにgzip呼び出しを使用しません。pg_dump
pg_restore
また、pg_dump ドキュメント指摘した:
pg_restoreへの入力に適したカスタムフォーマットアーカイブを出力します。カタログ出力形式とともに、リカバリ中にアーカイブされた項目を手動で選択して順序を変更できるため、最も柔軟な出力形式です。この形式はデフォルトで圧縮されています。
gzipはすでに圧縮されているコンテンツを圧縮しようとします。これは時間の無駄以外にはあまり役に立ちません。
実際、以下の--compress=0..9
同じ文書では、次のように説明します。
使用する圧縮レベルを指定します。 0 は圧縮がないことを意味します。カスタムおよびカタログ・アーカイブ形式の場合、個々の表データ・セグメントの圧縮を指定し、デフォルト値は中間レベルの圧縮です。プレーンテキスト出力の場合、ゼロ以外の圧縮レベルを設定すると、出力ファイル全体が圧縮されます。まるでgzip経由で提供されているかのように;しかし、デフォルトでは圧縮されません。 tarアーカイブ形式は現在圧縮をまったくサポートしていません。
したがって、すでにgzipを使用しています! gzipを使用してgzipで圧縮されたコンテンツのサイズを小さくすることはできません。
あなたができることは使用することです
pg_dump -Fc -Z0 -U -v | zstd -5 > db$(date +%d-%m-%y_%H-%M).custom.zst
# ^ ^ ^ ^
# | | | \----- zstd compression level 5:
# | | | better than gzip --best,
# | | | but much, much faster
# | | \-------- use the zstd compressor
# | \-------------------- don't compress yourself
# \--------------------- custom format
なぜならgzip
正直そうです。非常に廃止予定です。遅くて拡張性が悪く、圧縮率が非常に低いです。より良い選択肢がたくさんありますが、zstd
幅広い速度/圧縮率のトレードオフを可能にし、非常に積極的に維持され、すべてのプラットフォームで使用できます。
警告:以下は軽い豪言です。-5
圧縮の観点から、次のより高い圧縮設定を使用できます。しかし、高いほど圧縮速度が遅くなります。時間とスペースのトレードオフを試みるかどうかによって異なります-18
。私はしばしばを選択します-11
。zstd
これは通常のデータと比較して約2/3高速ですが、gzip --best
10%小さいファイルを生成する傾向があります。圧縮範囲と速度のトレードオフ(またはせいぜいzstd
アイドルCPU時間が多すぎて圧縮率を0.1%増やす場合)は、gzipよりも細かく、最新のシステムでより便利です。 gzipベース)は32kBウィンドウサイズに制限されています。なぜなら、64kB以上のRAMを持つ人は誰ですか?みんな。 2022年には私のオーブンにも64kB以上のRAMが搭載されます。したがって、zstdは非常に小さな辞書作成ウィンドウを使用しようとしません。これが圧縮がzlib / gzipよりも優れた単純な理由の1つです。-1
-18
-22