web-dev-qa-db-ja.com

tar:以前のエラーによる失敗状態で終了しました

私はディレクトリ+ファイルのリストを圧縮し圧縮する小さなスクリプトを書きました。

スクリプトの実行後に使用可能な.tar.gzファイルが作成されるため、スクリプトは正常に実行されたように見えます。

しかし、スクリプトが終了した後、私はこの厄介なメッセージを受け取ります。

tar:以前のエラーによる失敗状態で終了しました

スクリプトが動作している間はエラーメッセージは表示されません。また、前述のように、生成されたファイルは警告やエラーなしに解凍されます。バックアップの一部としてこれを使用しているので、重大なことを無視していないことを確認したいと思います。

このエラー/警告メッセージが表示される原因として考えられるものは何ですか?無視しても問題ありませんか。無視できない場合、エラーを診断して解決するための手順は何ですか?

私はUbuntu 10.0.4を実行しています

72
morpheous

何らかの理由で、tarが指定されたファイルすべてをtarに追加できない場合は、そのメッセージが表示されます。最も一般的な場合は、いずれかのファイルに対する読み取り権限がないことです。バックアップにこれを使用しているので、これは大きな問題になるかもしれません。 -vフラグを使用している場合は、そのままにしてみてください。これにより出力が減少し、何が起こっているのかがわかります。

92
KeithB

問題は引数です、f引数はファイル名として次を取ります、それは引数の最後でなければなりません

tar cvzf output.tgz folder

または

tar -cvzf output.tgz folder

同じで、エラーはありません。

22
Andrea Monni

私は同じ問題を抱えていました、そして、上記の答えのどれも私のために働きませんでした。しかし、次のコマンドを実行してもうまくいくことがわかりました。

tar -cpzf /backups/fullbackup.tar.gz --exclude=backups --exclude=proc --exclude=tmp --exclude=mnt --exclude=sys --exclude=dev --exclude=run /

tar: Exiting with failure status due to previous errorsで参照されていたエラーは、-vオプションをオフにすることで識別できます。確認すると、エラーは/run/sysのようなディレクトリから来ました。

これらのディレクトリを除外することによって、それはちょうどうまくいきます。これが同様の問題を抱えている人に役立つことを願っています。

5
DomainsFeatured

ログファイルなど、バックアップ中に変更される可能性のあるファイルをバックアップする場合があります。tarオプション '--ignore-failed-read'が便利です(私はDebian Linux上にいます、GNU以外のtarはわかりません)。

標準出力とエラーは、2つの異なるファイルにリダイレクトできます。

LOGDIR='/var/log/mylogdir' 
LOG=${LOGDIR}/backup.log 
ERRLOG=${LOGDIR}/backup.error.log 
DATE=$(date +%Y-%m-%d)
HOSTNAME=$(hostname)
DATA_DIRS='/etc /home /root'

tar --ignore-failed-read -f ${BACKUP_DIR}/${HOSTNAME}-${DATE}.tgz -cvz ${DATA_DIRS} > $LOG 2> $ERRLOG

私はこれが一般的に安全であると思うが、タールが止まらないので注意してください...

5

私は同じ問題を抱えていました。コマンドからダッシュ( " - ")を削除するだけでした。

としてタイプする代わりに

tar -cvfz output.tar.gzフォルダー/

と入力してみてください

tar cvfz output.tar.gzフォルダ/

私の場合、なぜダッシュが問題を引き起こしているのか私は知りませんが、少なくともうまくいきました。

3
jack

あなたは以前の答えを誤解しました。問題は-ではなく、fが引数リストのどこにあるかです。

tar cvfz target.tgz <files>

"z"という名前のアーカイブを作成しようとします。これはfの後のテキストです。エラーメッセージは、tarがアーカイブ "z"に追加する "target.gz"を見つけられないためです。

tar cvzf target.tgz <files>

正しくtarget.tgzを作成し、それにファイルを追加します。これは、target.tgzがf引数の後の最初のテキストであるためです。

1
Thornbury

私が受け取ったファイルについても同様の問題がありました。私はrootが所有するアーカイブにファイルを書き込む権限がありませんでした。 Sudoを使って修正しました。

0
ttwalkertt

通常、あなたはそのメッセージを無視することができます。 tarの作成中に下層のディレクトリツリーに変更(ファイルの削除/作成/変更など)があると、そのメッセージがスローされます。デバイスノード、fifoなどのような特別なファイルがある場合も、それらはその警告を引き起こします。

あなたはあなたが犯人ファイルを見ることができないと確信していますか? tar cvfz yourtarball.tgz /your/pathで試してください

0