tar が "/rw/internal_apps/rainbow/filebrowser-xxx/proc/29826/exe で失敗します。

tar が

tar組み込みバージョンのLinuxを実行しているデバイスのシステムディレクトリにアクセスしようとしましたが、失敗します。これはstderrの最後の行です。

tar: /rw/internal_apps/rainbow/filebrowser-45905a3/proc/29826/task/29826/exe: cannot read link: No such file or directory
tar: /rw/internal_apps/rainbow/filebrowser-45905a3/proc/29826/exe: cannot read link: No such file or directory
tar: /rw/internal_apps/rainbow/filebrowser-45905a3/proc/32037/task/32037/exe: cannot read link: No such file or directory
tar: /rw/internal_apps/rainbow/filebrowser-45905a3/proc/32037/exe: cannot read link: No such file or directory
tar: /rw/0/var/run/samba/nmbd/unexpected: socket ignored
tar: /rw/0/var/run/samba/unexpected: socket ignored
tar: /rw/0/var/run/ntpd.sock: socket ignored
tar: /rw/0/var/run/dbus/system_bus_socket: socket ignored
tar: error exit delayed from previous errors

同じエラーがたくさんあるようです。それでは、tar最初のエラーを削除または無視するのはどうでしょうか?tar特定のタイプのいくつかのエラーは許可されていますが、エラーの数が特定のしきい値を超えると、あきらめるように感じますか?

何千ものファイルを手動で除外しないソリューションを好む。

Busyboxのtarを使用してください。

アップデート:私が実行したコマンドsudo tar -czf /tmp/1.tar / --exclude=tmp --exclude=shares --exclude=media --exclude sys --exclude kcore

ベストアンサー1

少なくともこの--exclude=proc除外リストに追加する必要があります。

これ/procファイルシステムは、ディレクトリが作成され、ファイルが読み込まれると動的に生成される複合システムなので、「保存」する必要はありません。

具体的には、/proc/<pid>/exeプロセスが継続して<pid>実行されている間にのみ存在し、tarが実際にアーカイブを決定して実際にアーカイブを実行している間にプロセスが終了する可能性があります。また/proc、(たとえば)下のほとんどの「一般」ファイルは/proc/cmdlineサイズがゼロであるとマークされており、直接読み取ると内容があるにもかかわらず空のファイルとして保存されます。

tarが最初のものを捨てたり無視しないのはなぜですか?

次のように、最初のエラーの後に簡単に減らすことができます。

set -o pipefail  # optional, use it if you want to check the exit status
tar -cf ... 2>&1 | sed 5q

tarは特定の種類のエラーを許可しますが、エラーの数が特定のしきい値を超えると放棄します。

tarそのようなことはありません。少なくともGNUやbusybox tar(使用中)ではありません。

tar: /rw/0/var/run/ntpd.sock: socket ignored

これは警告にすぎず、終了ステータスには影響しません。しかし、/var/run通常これはtmpfs(完全にメモリ常駐ファイルシステム)なので/dev

おすすめ記事