GNU/Linux >> Belajar Linux >  >> Linux

Hapus File Yang Belum Diakses Untuk Waktu Yang Diberikan Di Linux

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 parameter. Parameter menentukan ambang batas usia untuk menghapus file. Anda dapat menggunakan parameter time_spec berikut untuk menghapus file.

  • 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

Linux
  1. Periksa file konfigurasi Linux untuk kesalahan sintaks

  2. Temukan File yang Dimodifikasi Hari Ini (atau Sejak Waktu Tertentu yang Lalu) di Unix &Linux

  3. Linux Hapus File dan Direktori

  1. Hapus hanya file dalam direktori di direktori BUKAN linux

  2. Temukan file yang telah diubah dalam 24 jam terakhir

  3. Mungkinkah deskriptor file linux 0 1 2 bukan untuk stdin, stdout dan stderr?

  1. Mendapatkan Semua File Yang Telah Dimodifikasi Pada Tanggal Tertentu?

  2. Daftar Semua Direktori Yang Tidak Memiliki File Dengan Nama File Yang Diberikan Di Dalamnya?

  3. Cara menemukan dan menghapus file yang lebih lama dari periode waktu tertentu di Linux