web-dev-qa-db-ja.com

読み取り権限なしでファイルとディレクトリを無視してディレクトリ構造をバックアップする方法

読み取る権限がないファイルやディレクトリがいくつかあるディレクトリ構造をバックアップする方法はありますか?バックアップ(tar?jar?)がクラッシュすることなく、それらを無視したいと思います。

9
user3228053

Gnu tarには、まさにそれを行うオプション_--ignore-failed-read_があります。

GNU tarを使用していない場合は、バックアップするファイルのリスト、または除外するファイルのリストを生成できます。GNU find hasファイルに対する読み取り権限があるかどうかをテストする_-readable_述語。他のバージョンのfindでは、findだけを維持するには、ファイル権限(_-perm_)と所有権(_-user_、group)。これにより、グループやACLなどの処理が困難になります。外部プログラムまたはシェル組み込みのtest。これは、tarにオプション_-X_があり、除外するファイル名の新しい行で区切られたリストを読み取ると仮定した例です(新しい行を含むファイル名は、解析の問題を回避するためにスキップされます)。

_find . ! -name '*
*' -exec sh -c 'for x; do [ -r "$x" ] || printf "%s\\n" "$x"; done' _ {} |
tar -cf backup.tar -X - .
_

パスに改行がない場合は、次のようにすることができます。

find . -type f -readable -print | tar cf test.tar -T -

これはGNU findおよびtarに制限される場合があり、特定のファイルシステム(NFS、Fuse)では機能しない場合があります。改行がある場合またはある場合があります。使用する -print0 の代わりに -print for find and add --null for tar

2
Hauke Laging