GNU/Linux >> Belajar Linux >  >> Linux

Cara membuat tar untuk file yang lebih lama dari 7 hari menggunakan skrip shell linux

Ganti find Anda perintah dengan ini dan coba lagi,

find /var/log -type f -mtime +7 

Ini akan berhasil:

#!/bin/bash
files=()
while IFS=  read -r -d $'\0'; do
    files+=("$REPLY")
done < <(find /var/log/ -mtime +7 -print0)
tar cvfz backup.tar.gz "${files[@]}"

Perhatikan penggunaan "${files[@]}" sebagai kebalikan dari ${files[*]} . "${files[@]}" akan diperluas untuk menyediakan tar dengan satu argumen per nama file dan akan berfungsi meskipun nama file berisi spasi, tab, atau baris baru. Sebaliknya, setelah shell memperluas ${files[*]} , itu akan melakukan pemisahan kata, berpotensi mengacaukan nama file Anda.

Untuk penjelasan mendetail tentang loop yang digunakan untuk membuat files array, lihat:Bagaimana saya bisa menyimpan hasil perintah find sebagai array di Bash

Semua file dan direktori dihasilkan oleh perintah find /var/log/ -mtime +7 akan disertakan dalam tar mengajukan. Untuk menyertakan hanya file, bukan direktori, lihat jawaban Skynet.

Untuk mengarsipkan log dari tujuh hari terakhir

Hanya satu karakter yang perlu diubah:

#!/bin/bash
files=()
while IFS=  read -r -d $'\0'; do
    files+=("$REPLY")
done < <(find /var/log/ -mtime -7 -print0)
tar cvfz backup.tar.gz "${files[@]}"

Ini berfungsi karena find menginterpretasikan argumen numerik sebagai berikut:

Argumen numerik dapat ditentukan sebagai
+n untuk lebih dari n,
-n kurang dari n,
n untuk tepat n.

Jadi, -mtime +7 berarti lebih dari 7 hari sementara -mtime -7 berarti kurang dari 7. Perhatikan bahwa find akan mengabaikan bagian pecahan. Jadi +7 akan mencakup 8 hari tetapi tidak 7,5 hari. Lihat man find untuk detailnya.


Linux
  1. Mengapa Find -mtime +1 Hanya Mengembalikan File Lebih Lama dari 2 Hari?

  2. Bagaimana Cara Menemukan File yang Dimodifikasi dalam 30 Hari Terakhir di Linux?

  3. Cara Menghapus File Lebih Lama dari N hari menggunakan tmreaper di Linux

  1. Cara membuat file sparse di Linux menggunakan perintah 'dd'

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

  3. Bagaimana saya bisa menemukan versi shell saya menggunakan perintah Linux?

  1. Cara Menemukan File Yang Lebih Besar Atau Lebih Kecil Dari Ukuran X Di Linux

  2. Bagaimana cara Menghapus semua file yang lebih lama dari X jumlah Hari di Linux?

  3. Linux:menggunakan find untuk menemukan file yang lebih lama dari <tanggal>