Saya ingin menghapus cadangan yang lebih lama dari 7 hari tetapi pertahankan yang pertama setiap bulan.
Nama file adalah: name_$(date +\%d\%m\%Y).tar.gz
Saya ingin tetap: name_$(date +\01\%m\%Y).tar.gz
Saya ingin sesuatu seperti ini:
find /path -mtime +8 -exec rm {} \;
Di mana saya bisa masuk name_$(date +\01\%m\%Y).tar.gz
?
Mungkin menggunakan --exclude name_$(date +\01\%m\%Y).tar.gz
Saya mencari perintah satu baris.
Tidak ingin subdirektori.
Mencoba dengan gema tidak berfungsi dengan baik tetapi menunjukkan sesuatu dari 01.
yang --exclude
tidak berfungsi:command not found
/01Monthly
,/BackupsRetained
, dll dan kemudian memiliki logika Anda yang lain melakukan sisanya tanpa pengecualian atau--exclude
beralih? Dengan cara ini01
file Anda selalu bergerak terlebih dahulu per skrip yang sama yang membersihkan dan mereka selalu di sub-folder "standar" lainnya di dalam folder root yang sama daripada Anda membersihkan file lama 7 hari dari hanya dalam folder itu dan tidak secara rekursif.--exclude name_01*.tar.gz
? Cobalah denganecho
alih - alihrm
sebelumnya ... :)Jawaban:
Ini berfungsi untuk saya di bawah Debian / Ubuntu (dan paling banyak berfungsi):
Misalnya jika Anda memiliki file yang bertanggal dalam format berikut:
mybackup_ 12-01-2015 .tar.gz
Perintah:
ls
untuk menunjukkan apa yang tersisa.Ketika Anda senang dengan perintah, itu juga berfungsi dengan baik sebagai tugas / pekerjaan cron. Saya memilikinya menjalankan skrip saya setiap dua bulan sekali. (skrip saya menggunakan mtime +90 hari untuk membersihkan backup mysql)
sumber