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


9

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

回答:


8

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

GNU tarを使用していない場合は、バックアップするファイルのリスト、または除外するファイルのリストを生成できます。GNU findには-readable、ファイルに対する読み取り権限があるかどうかをテストする述語があります。findの他のバージョンでは、find単独で使用するには、これをファイルのアクセス許可(-perm)と所有権(-usergroup)で概算する必要があります。これにより、グループ、ACLなどへの対応が困難になります。外部プログラムまたは組み込みシェルtest。除外するファイル名の改行で区切られたリストを読み取るtarオプションがあると想定した例を次に示します-X(解析の問題を回避するために、改行を含むファイル名はスキップされます)。

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

--ignore-failed-readで初めて完全に機能しました。システムはRed Hatでしたので、GNU tarが用意されていました。
user3228053

2

パスに改行がない場合、これを行うことができます:

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

これは、GNUに限定されてもよいfindし、tarおよび特定のファイル・システム(NFS、FUSE)と動作しない場合があります。改行がある場合、または改行がある場合は-print0-printforの代わりにを使用してfor findを追加--nulltarます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.