Synology NASで30日以上経過したバックアップファイルを削除しようとしました。このファイルは、私のWebサーバーからバックアップファイルのダウンロード中に作成されたディレクトリにあります。
ダウンロード後に-mtimeを確認した後、既存のファイルを削除したいと思います。
スクリプトは次のとおりです。
#!/bin/sh
## Datum auslesen
datum=`date +%Y-%m-%d_%H-%M`
## Mit wget die Datei AutoBackupDB-1.zip laden und in einem Ordner mit Datum uns Uhrzeit speichern
wget -m -P /volume1/Austauschordner/backup_xyz/$datum/ ftp://backup:[email protected]/AutoBackupDB-1.zip
echo "Backup von xyz wurde erstellt! "
## finde alle Ordner in einem angegebenen Verzeichnis mit dem Suchnamen die älter als die angegebenen Tage sind und lösche diese
find /volume1/Austauschordner/ -type d -name 'backup_*' -ctime +30 -delete
このスクリプトを実行すると、「ディレクトリが空ではありません」というメッセージが表示され、何も削除されません。
ディレクトリ内のすべてのエントリを削除する簡単な方法やオプションはありますか?
答え1
@Stephen Kittが述べたように、これはほとんど重複しています。find -delete は空でないディレクトリを削除しません。これは、ディレクトリを削除するように指示しましたが、ディレクトリが空ではないことを示しています(rm some_nonempty_directory
-rフラグなしで実行することは少なくとも機能しません)。
つまり、or-delete
に置き換えると、スクリプトはエラーなしでディレクトリを再帰的に削除する必要があります(テスト後に詳細な出力を望まない場合は、そのフラグを削除してください)。-exec rm -rv {} +
-exec rm -rv {} \;
v
注:+
最後にあることはrm -rv file1 file2 ...
while操作を\;
引き起こします。rm -rv file1; rm -rv file2; ...