一部のサーバーをスパース ディスク イメージ バンドルにバックアップするためにタイム マシンを使用しています。スペースが解放されたら、古いバックアップをクリーンアップしてイメージのサイズを変更するスクリプトが必要です。右クリックして古いバックアップを削除する場合、それらを削除するにはパスワードを入力する必要があるため、データが保護されていることはほぼ確実です。スクリプトでそれらを削除できるようにするために、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
が、違いはありませんでした。
なぜこれがうまくいかないのかについて私は考えていないので、これに関する助けは大歓迎です。