Kami telah membahas cara menemukan dan menghapus file yang lebih lama dari X hari secara manual menggunakan perintah "find" di Linux . Hari ini kami akan melakukan hal yang sama, tetapi hanya jika file belum diakses untuk jangka waktu tertentu. Sapa "Tmpwatch" , utilitas baris perintah untuk menghapus file yang belum diakses secara rekursif selama waktu tertentu. Tidak hanya file, tmpwatch juga akan menghapus direktori kosong.
Secara default, Tmpwatch akan memutuskan file/direktori mana yang harus dihapus berdasarkan atime
mereka (waktu akses). Anda tentu saja dapat mengubah perilaku ini dengan menggunakan ctime
(waktu perubahan inode), mtime
(waktu modifikasi) nilai juga. Biasanya, Tmpwatch dapat digunakan untuk menghapus konten /tmp
direktori dan hal-hal lain yang tidak digunakan dan tidak diinginkan seperti file log lama.
Peringatan penting!!
Sebelum mulai menggunakan alat ini, Anda harus tahu bahwa Tmpwatch akan menghapus file dan direktori secara rekursif berdasarkan kriteria yang diberikan. Jangan jalankan tmpwatch di / (direktori root) . Direktori ini berisi file-file penting yang diperlukan untuk menjaga agar sistem Linux tetap berjalan. Jika Anda tidak cukup berhati-hati, tmpwatch akan menghapus file dan direktori sistem penting yang cocok dengan kriteria yang diberikan di seluruh direktori root. Tidak ada mekanisme perlindungan yang dibangun ke dalam alat Tmpwatch untuk mencegah Anda menjalankannya di direktori root. Jadi, tidak ada cara untuk membatalkan operasi. Anda telah diperingatkan!
Instal Tmpwatch di Linux
Tmpwatch tersedia di repositori default sebagian besar distribusi Linux.
Pada Fedora, CentOS, RHEL, AlmaLinux dan Rocky Linux, Anda dapat menginstalnya menggunakan perintah:
$ sudo dnf install tmpwatch
Di openSUSE:
$ sudo zypper install tmpwatch
Di Debian dan turunannya seperti Ubuntu, Tmpwatch tersedia dalam nama yang berbeda yaitu Tmpreaper . Tmpreaper sebagian besar didasarkan pada `tmpwatch-1.2/1.4' oleh Erik Troan dari Redhat. Sekarang, tmpreaper dipertahankan untuk Debian oleh Paul Slootman .
Untuk menginstal tmpreaper di Debian, Ubuntu, Linux Mint, jalankan:
$ sudo apt install tmpreaper
Untuk meluncurkannya, jalankan:
$ tmpreaper <options>
Atau masukkan jalur lengkap:
$ /usr/sbin/tmpreaper <options>
Hapus File Yang Belum Diakses Selama Waktu Yang Diberikan Menggunakan Tmpwatch / Tmpreaper
Penggunaan Tmpwatch dan Tmpreaper hampir sama. Jika Anda menggunakan sistem berbasis Debian, ganti "Tmpwatch" dengan "Tmpreaper" dalam contoh berikut.
Hapus file yang tidak diakses lebih dari X hari
Untuk menghapus file lebih dari 10 hari, jalankan:
tmpwatch 10d /var/log/
Perintah di atas akan menghapus semua file dan direktori kosong yang tidak diakses lebih dari 10 hari dari /var/log/
folder.
Hapus file yang tidak diubah lebih dari X hari
Seperti yang sudah saya katakan, Tmpwatch akan menghapus file berdasarkan waktu aksesnya. Anda juga dapat menghapus file berdasarkan waktu modifikasinya (mtime) menggunakan -m
pilihan.
Misalnya, perintah berikut akan menghapus file yang tidak dimodifikasi selama 10 hari di /var/log/
folder.
tmpwatch -m 10d /var/log/
Di sini, -m
merujuk waktu modifikasi dan d
adalah
d
- selama berhari-hari,h
- selama berjam-jam,m
- selama beberapa menit,s
- selama beberapa detik.
Jam adalah default.
Misalnya, untuk menghapus file yang tidak diubah selama 10 jam , cukup jalankan:
tmpwatch -m 10 /var/log/
Seperti yang mungkin Anda perhatikan, saya belum menggunakan parameter time_spec pada perintah di atas. Karena, h (for hours) adalah parameter default, jadi kami tidak perlu menyebutkannya saat menghapus file yang belum diubah selama X jam terakhir.
Hapus Symlink
Jika Anda ingin menghapus symlink, bukan hanya file dan direktori biasa, gunakan -s
pilihan seperti di bawah ini.
tmpwatch -s 10 /var/log/
Hapus semua file
Untuk menghapus semua jenis file, bukan hanya file biasa, symlink, dan direktori, gunakan -a
pilihan.
tmpwatch -a 10 /var/log/
Perintah di atas akan menghapus semua jenis file termasuk file biasa, symlink, dan direktori di /var/log/
folder.
Kecualikan direktori dari penghapusan
Terkadang, Anda mungkin ingin menghapus file, tetapi bukan direktori. jika demikian, perintahnya adalah:
tmpwatch -am 10 --nodirs /var/log/
Perintah di atas akan menghapus semua file kecuali direktori yang tidak diubah selama 10 jam terakhir.
Lakukan uji coba tanpa benar-benar menghapus apa pun
Terkadang, Anda mungkin ingin melihat file mana yang sebenarnya akan dihapus. Ini akan membantu ketika menjalankan Tmpwatch pada direktori penting. Jika demikian, jalankan Tmpwatch dalam mode uji dengan -t
pilihan.
tmpwatch -t 30 /var/log/
Contoh keluaran dari server CentOS 7:
removing file /var/log/wtmp removing directory /var/log/ppp if empty removing directory /var/log/tuned if empty removing directory /var/log/anaconda if empty removing file /var/log/dmesg.old removing file /var/log/boot.log removing file /var/log/dnf.librepo.log
Pada sistem berbasis Debian, Anda akan melihat output seperti di bawah ini.
$ tmpreaper -t 30 /var/log/ (PID 1803) Pretending to clean up directory `/var/log/'. (PID 1804) Pretending to clean up directory `apache2'. Pretending to remove file `apache2/error.log'. Pretending to remove file `apache2/access.log'. Pretending to remove file `apache2/other_vhosts_access.log'. (PID 1804) Back from recursing down `apache2'. (PID 1804) Pretending to clean up directory `dbconfig-common'. Pretending to remove file `dbconfig-common/dbc.log'. (PID 1804) Back from recursing down `dbconfig-common'. (PID 1804) Pretending to clean up directory `dist-upgrade'. (PID 1804) Back from recursing down `dist-upgrade'. (PID 1804) Pretending to clean up directory `lxd'. (PID 1804) Back from recursing down `lxd'. Pretending to remove file `/var/log//cloud-init.log'. (PID 1804) Pretending to clean up directory `landscape'. Pretending to remove file `landscape/sysinfo.log'. (PID 1804) Back from recursing down `landscape'. [...]
Ini hanya akan menyimulasikan operasi, tetapi tidak benar-benar menghapus apa pun. Tmpwatch hanya akan menjalankan proses kering dan menunjukkan kepada Anda file mana yang akan dihapus di output.
Paksa penghapusan file
Jika Anda ingin menghapus file secara paksa, gunakan -f
pilihan.
tmpwatch -f 10h /var/log/
Biasanya, file yang dimiliki oleh pengguna saat ini, tanpa akses tulis, tidak dihapus. -f
opsi akan menghapusnya juga.
Lewati file tertentu dari penghapusan
Tmpreaper memiliki opsi untuk melewatkan file dari penghapusan. Ini akan berguna ketika Anda ingin menyimpan jenis file tertentu dan menghapus yang lainnya. Jika demikian, gunakan --protect
pilihan.
tmpreaper --protect '*.txt' -t 10h /var/log/
Perintah ini akan melewati semua file yang memiliki .txt
ekstensi dari penghapusan
Contoh keluaran:
(PID 2623) Pretending to clean up directory `/var/log/'. (PID 2624) Pretending to clean up directory `apache2'. Pretending to remove file `apache2/error.log'. Pretending to remove file `apache2/access.log'. Pretending to remove file `apache2/other_vhosts_access.log'. (PID 2624) Back from recursing down `apache2'. (PID 2624) Pretending to clean up directory `dbconfig-common'. Pretending to remove file `dbconfig-common/dbc.log'. (PID 2624) Back from recursing down `dbconfig-common'. (PID 2624) Pretending to clean up directory `dist-upgrade'. (PID 2624) Back from recursing down `dist-upgrade'. Pretending to remove empty directory `dist-upgrade'. Entry matching `--protect' pattern skipped. `ostechnix.txt' (PID 2624) Pretending to clean up directory `lxd'.
Seperti yang Anda lihat, Tmpreaper melewatkan *.txt
file dari penghapusan.
Omong-omong, opsi ini tidak tersedia di Tmpwatch.
Mengatur tugas cron untuk menghapus file secara berkala
Anda mungkin tidak ingin menjalankan Tmpwatch/Tmreaper secara manual sepanjang waktu. Dalam hal ini, Anda dapat menyiapkan tugas cron untuk mengotomatiskan proses pembersihan.
Saat memasang Tmreaper , itu akan membuat tugas cron harian (/etc/cron.daily/tmpreaper
). Pekerjaan ini akan membaca opsi dari /etc/timereaper.conf
mengajukan dan bertindak sesuai dengan itu. Buka file dan ubah nilainya sesuai kebutuhan Anda. Secara default, Tmpreaper akan menghapus file yang 7 hari lebih lama. Namun, Anda dapat mengubahnya dengan mengubah nilai "TMPREAPER_TIME=7d"
dalam file tmreaper.conf.
Jika Anda menggunakan "Tmpwatch", Anda perlu membuat tugas cron secara manual dan memasukkan entri cron ke dalamnya.
# crontab -e
Tambahkan baris berikut:
0 1 * * * /usr/sbin/tmpwatch 30d /var/log/
Sesuai dengan tugas cron di atas, Tmpwatch akan berjalan setiap hari pada jam 1 pagi dan menghapus file yang berusia 30 hari lebih lama.
Untuk detail selengkapnya tentang menyetel tugas cron, lihat tautan berikut.
- Panduan Pemula Untuk Cron Jobs
Sekali lagi, harap berhati-hati saat menggunakan perintah Tmpwatch/Tmpreaper . Periksa kembali jalur tersebut sebelum menjalankannya untuk menghindari kehilangan data.
Untuk detail lebih lanjut, lihat halaman manual.
$ man tmpwatch
Atau,
$ man tmpreaper
Bacaan terkait:
- Autotrash – Alat CLI Untuk Membersihkan File Sampah Lama Secara Otomatis
- Trash-cli :Tempat Sampah Commandline Untuk Sistem mirip Unix
- Menemukan Dan Menghapus File Terlama Jika Ada Lebih dari X File Dalam Sebuah Direktori
- Cara Menemukan Dan Menghapus Paket yang Tidak Digunakan Di Linux
- Cara Membersihkan File Sampah Di Ubuntu Menggunakan Pembersih Ubuntu