1

一部のサーバーをスパース ディスク イメージ バンドルにバックアップするためにタイム マシンを使用しています。スペースが解放されたら、古いバックアップをクリーンアップしてイメージのサイズを変更するスクリプトが必要です。右クリックして古いバックアップを削除する場合、それらを削除するにはパスワードを入力する必要があるため、データが保護されていることはほぼ確実です。スクリプトでそれらを削除できるようにするために、root としてスクリプトを実行しています。何らかの理由で、実行されず、削除しようとするすべてのファイルが取得されます

rm: /file/: Operation not permitted

これが私のスクリプトとして持っているものです:

#!/bin/bash

for server in servername; do
    /usr/bin/hdiutil attach -mountpoint /path/to/mountpoint /path/to/sparsebundle/$server.sparsebundle/;
    /bin/sleep 10;
    /usr/bin/find /path/to/mountpoint -type d -mtime +7 -exec /bin/rm -rf {} \;
    /usr/bin/hdiutil unmount /path/to/mountpoint;
    /bin/sleep 10;
    /usr/bin/hdiutil compact /path/to/sparsebundle/$server.sparsebundle/;
    done

exit;

これを引き起こしていると私が考えた問題の 1 つは、デフォルトのマウントが /Volumes/Time\ Machine\ Backups/ であったため、マウントポイントを指定する必要があることでした。そのため、マウントポイントを作成しました。また、マウント後にファイルをすばやく削除しようとしていて、実際にはまだマウントされていないと思ったので、スリープを追加しました。-deleteの代わりに find のオプションを使用してみました-execが、違いはありませんでした。

なぜこれがうまくいかないのかについて私は考えていないので、これに関する助けは大歓迎です。

4

2 に答える 2

0

これは古いスレッドですが、タイム マシン バンドルのバックアップはコピーではなく、ファイルへのリンク (ハード リンクを使用) であることに注意する必要があります。つまり、ファイルが変更されていない場合は、ファイルのコピーが数バイトのオーバーヘッドしかかからないため、ファイルの複数のコピーが表示されるからといって、それらすべてが物理スペースを使用しているとは限りません。

from (タイムマシンの仕組みについてのこのサイト) ---------

Time が最初のバックアップを作成すると、すべてがコピーされます (一部のシステム作業ファイル、ゴミ箱などを除く)。また、日付付きのバックアップ フォルダを作成し、作成したばかりのすべてのバックアップ コピーへのハード リンクをそこに配置します。次に、Time Machine が 2 回目のバックアップを作成すると、最初のバックアップ以降に変更されたすべてのものがコピーされ、別の日付付きバックアップ フォルダが作成され、その中に新しいバックアップ項目へのハード リンクが配置されます。ここまでは順調ですね。

しかし、ここに秘訣があります。2 番目のバックアップ フォルダに、変更されていない項目へのハード リンクも配置します。そのため、フォルダーには、2 回目のバックアップ時にシステム上にあったすべてのものへのリンクが含まれています。


于 2016-03-25T17:29:12.687 に答える