これをデバッグする方法は?この問題は過去2日間に突然現れました。ウェブサイトのすべてのバックアップが破損しています。
バックアップをそのままにしておくとtar
問題はありませんが、tarが圧縮されると、それ以外の場合はgz
解凍xz
できません。
利用可能なディスクが多い
Local disk space 2.68 TB total / 2.26 TB free / 432.46 GB used
間違い
tar: Skipping to next header[===============================> ] 39% ETA 0:01:14
tar: A lone zero block at 2291466===============================> ] 44% ETA 0:01:13
tar: Exiting with failure status due to previous errors
878MiB 0:00:58 [15.1MiB/s] [===================================> ] 44%
なぜそのようなことを言うのですSkipping to next header
か?以前は一度も行ったことはありません。いくつかのファイルに深刻な問題があります。
ディレクトリには約15,000個のpdf、jpg、またはpngファイルがあります。
注文する
pv $backup_file | tar -izxf - -C $import_dir
圧縮を破るデータが必要です。
また、次のようにしてハードドライブの状態を確認してみました。
# getting the drives
lsblk -dpno name
smartctl -H /dev/sda
smartctl -H /dev/sdb
両方のドライブで以下を取得します。
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
tar.gzが破損したファイルを見つける方法は?ただ削除したいです。
修正する
これで、すべてのファイルを別のサーバーにコピーしましたが、同じ問題が発生しました。すべてを圧縮して問題なく抽出できますが、ファイルを圧縮したい瞬間に解凍することはできません(gz / xz)。
ベストアンサー1
ファイルが切り捨てられたか破損しているため、xz
データの末尾に到達できません。tar
その苦情は、アーカイブが途中で停止するためです。これは、データ全体をxz
読み取ることができないという点で論理的です。
問題が発生した場所を確認するには、次のコマンドを実行します。
cat /var/www/bak/db/2017-05-20-1200_mysql.tar.xz >/dev/null
xzcat /var/www/bak/db/2017-05-20-1200_mysql.tar.xz >/dev/null
苦情を申し立てると、ディスク上cat
のファイルが破損し、オペレーティングシステムが破損を検出しました。詳しくはカーネルログをご覧ください。通常、この時点でディスクを交換する必要があります。単に文句を言うだけで、xz
オペレーティングシステムは破損を検出できませんでしたが、ファイルはまだ有効ではありません(破損または切り捨て)。どちらの方法でもファイルを回復することはできません。オフラインバックアップから復元する必要があります。