2010-07-29 07:17:55 +0000 2010-07-29 07:17:55 +0000
84
84

tarを使用しています。以前のエラーで失敗した状態で終了

ディレクトリとファイルのリストを tar 化して圧縮する小さなスクリプトを書きました。

スクリプトは順調に実行されているようで、スクリプトの実行後に使用可能な .tar.gz ファイルが作成されます。

しかし、スクリプト終了後に次のような迷惑なメッセージが表示されます:

tar。

tar: Exiting with failure status due to previous errors スクリプトが動作している間はエラーメッセージは表示されません。これをバックアップの一部として使用しているので、何か深刻なものを無視していないか確認したいのです。

このエラー/警告メッセージが生成されている可能性のある理由は何ですか - そして、私は安全に無視することができますか?無視できない場合、エラーを診断して解決するにはどのような手順がありますか?

Ubuntu 10.0.4を使用しています。

回答 (9)

106
106
106
2010-07-29 11:22:18 +0000

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

23
23
23
2013-01-28 09:21:24 +0000

問題は引数fの引数がファイル名の次を取るので、引数

tar cvzf output.tgz folder

の最後の引数か、

tar -cvzf output.tgz folder

が同じでテイクエラーにならないようにしなければなりません。

6
6
6
2014-01-17 12:24:36 +0000

ログファイルのようにバックアップ中に変更される可能性のあるファイルをバックアップする場合、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
5
5
2016-10-10 15:03:38 +0000

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

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のようなディレクトリからエラーが発生していました。

これらのディレクトリを除外することで、正常に動作します。同じような問題を抱えている方のお役に立てれば幸いです。

3
3
3
2011-09-10 23:06:14 +0000

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

tar -cvfz output.tar.gz folder/

と入力する代わりに、

tar cvfz output.tar.gz folder/

と入力してみてください。

2
2
2
2013-10-19 07:52:47 +0000

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

tar cvfz target.tgz <files>

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

tar cvzf target.tgz <files>

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

0
0
0
2019-10-15 15:49:46 +0000
One of the reason to get this errors for beginners is that They forget to perform operations in the directory where the files are present Go to that location and perform the command As my files are in desktop ~/Desktop# tar - cf done.tar abc xyz Where xyz and abc are files and we are storing those files in done.tar If we go and perform the command in other location we will get above error
0
0
0
2019-04-23 18:33:45 +0000

私は、受け取ったファイルをアンタリングするのと同じような問題を抱えていました。rootが所有するアーカイブにファイルを書き込む権限がないことが判明しました。sudoを使うと直りました。

0
0
0
2010-07-29 07:26:01 +0000

通常はこのメッセージを無視することができます。tar の作成中にディレクトリツリーに変更(ファイルの削除、作成、変更など)があった場合は、このメッセージが表示されます。また、デバイスノードやfifosなどの特殊なファイルがある場合も警告が出ます。

本当に原因となるファイルが見当たらないのでしょうか?tar cvfz yourtarball.tgz /your/pathで試してみてください。