
私は Ubuntu 10.04 を使用しています。スクリプトで頻繁に使用する (多数のサブディレクトリを含む) 大きなディレクトリとデータ ファイルがあります。このスーパー ディレクトリ内のファイルやディレクトリを誤って削除、上書き、変更しないようにしたいと考えています。
どうやってやるの?
答え1
主に保護を低下させ、利便性を高める順序で並べられています。
ファイルを CD-ROM などの物理的に読み取り専用のメディアに保存します。
読み取り専用でマウントする別のファイルシステムにファイルを保存します。
管理者の場合は、別のユーザーを作成し、これらのファイルをそのユーザーの所有にします。
FUSEを使用するバインド(Ubuntuパッケージ
bindfs
)を使用してディレクトリツリーの読み取り専用ビューを作成し、スクリプトをこの読み取り専用ビューに向けます。:bindfs -p a-w /path/to/actual/tree /path/to/readonly/view myscript -d /path/to/readonly/view
ディレクトリ ツリーを読み取り専用にします
chmod a-w /path/to/tree
。ハードリンクされたファイルを含むツリーのコピーを作成し、スクリプトをそのコピーにポイントします。スクリプトは既存のファイルを変更し続ける可能性がありますが、ファイルの作成、削除、または置換はコピーにのみ影響します。
cp -al /path/to/actual/tree /path/to/readonly/view myscript -d /path/to/readonly/view
bindfs を使用することをお勧めします。要件を考慮して他の方法を実行する唯一の理由は、それが利用できない場合です。
スクリプトがディレクトリツリーに書き込みできるようにしたいが、実際のファイルには影響を与えたくない場合は、ユニオンファイルシステムを使用できます。たとえば、機能またはユニオンFSヒューズ。
答え2
結局、何をしても削除できるため、実際の方法はありません。
それでも、ファイル権限を試すことはできます。ディレクトリを右クリックし、フォルダー アクセスを [ファイルにアクセス] に設定し、ファイル アクセスを読み取り専用に設定します。その後、[囲まれたファイルに権限を適用] をクリックします。この方法では、そのディレクトリ内のファイルを削除するときに、この設定を手動で解除する必要があります。
答え3
rsync
ディレクトリを別のディレクトリに移動し、--link-dest
ハードリンクを作成して余分なスペースを占有しないようにすることができます。
良い記事とはすべての Unix 用の Time Machine。
答え4
人は誰でも間違いを犯すものです。私はかつて、起きたばかりでまだ眠かったため (二日酔いではありません)、重要なファイルを削除してしまいました :) 幸いなことに、そのような愚かな行動による悪影響を軽減するのに役立ついくつかのトリックを学んだずっと後に、そのことが起こりました。そのトリックは次のとおりです。
- 常にバックアップを取り、定期的にバックアップに実際に含まれているはずのものが含まれていることを確認してください。そうすることで、ファイルを失くし、バックアップから復元しようとしたときに、何らかの理由でバックアップに含まれていないことが判明するという状況を避けることができます。
- バージョン管理を使用する
- inotifyのような会計システムを使用すると、ファイルシステムの変更を追跡するのに役立ちます。
この出来事から、私はさらに「眠いときは絶対にコンピューターに触れない」という厳格なルールを定めました。