Saya memiliki skrip bash, dibuat oleh seseorang yang tidak lagi dapat menjelaskan artinya, yang digunakan untuk TAR otomatis folder dan mencadangkannya. Saat ini saya bingung dengan baris terakhir:
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
Script lengkapnya ada di bawah ini.
#!/bin/bash
#Purpose = Backup of Important Data
#Created on 17-1-2012
#Author = Hafiz Haider
#Version 1.0
#START
TIME=$(date +"%m-%d-%Y-%T")
FILENAME=pokebrawl-$TIME.tar.gz
SRCDIR=/home/servers/brawl/world
DESDIR=/home/_backups/pokebrawl
tar -cpzf $DESDIR/$FILENAME $SRCDIR
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete
#END
bash
shell-script
find
MODS Hapus Akun
sumber
sumber
Jawaban:
The
find
perintah akan menghapus file biasa di atau di bawah/home/_backups/pokebrawl
direktori yang berusia lebih dari tujuh hari (atau lebih tepatnya, tidak dimodifikasi dalam minggu terakhir).Ini harus mungkin membaca
atau
karena sudah ada variabel yang memegang nama direktori dengan sangat baik. Variasi kedua akan menyebabkan kesalahan jika
DESDIR
karena alasan tertentu kosong atau tidak disetel.Saya berasumsi ini adalah cara hanya menyimpan cadangan minggu lalu. Saya akan menyarankan menggunakan sesuatu seperti
borgbackup
ataurestic
sebagai gantinya, karena ini akan dapat menyimpan cadangan lebih lama tanpa menggunakan lebih banyak ruang (bahkan cadangan per jam selama setahun tidak akan memakan banyak ruang sama sekali jika data tidak banyak berubah) . Mereka melakukan deduplikasi data danborgbackup
juga mendukung kompresi (keduanya mendukung backup jarak jauh dan enkripsi juga).Untuk menjalankan skrip setiap 24 jam (tengah malam), gunakan tugas cron.
Pertama, berikan perintah
crontab -e
. Ini akan membuka editor dengan crontab saat ini untuk pengguna aktif (ini mungkin atau mungkin bukan file kosong).Kemudian tambahkan
(di mana
path/to/the/script.sh
pathname dari skrip).Simpan dan keluar dari editor.
Naskahnya sekarang akan dipanggil tengah malam, bahkan malam hari.
Apakah Anda ingin menjalankan skrip di, katakanlah, 13:30 setiap sore, tambahkan yang berikut sebagai entri crontab:
Lihat manual crontab di sistem Anda untuk detail tentang cara menulis jadwal crontab (
man 5 crontab
).sumber
find
/delete
operasi ini, dalam kasus beberapa doofus lupa untuk mengatur$DESDIR
atau mengaturnya ke "/" atau karena kesalahan.DESDIR
diubah danfind
perintah tidak diperbarui, itu akan gagal untuk membersihkan direktori yang benar. Mungkin akan bermanfaat jika menggunakan${DESDIR:?Not set correctly}
atau yang serupa.Ini menemukan semua file dalam direktori
/home/_backups/pokebrawl
yang belum dimodifikasi pada+6
hari-hari terakhir dan menghapusnya. CATATAN:+6
sama dengan 7 hari.Lihat
man find
untuk melihat bagaimana switch ini bekerja:Pada distro Redhat Anda cukup meletakkan skrip ini di direktori
/etc/crondaily
dan itu akan berjalan setiap hari. Anda dapat melihat bahwa ada skrip lain di sana yang dapat Anda gunakan sebagai contoh:sumber