Perbarui crontab ke file baru / yang diperbarui setiap 5 jam

Nov 30 2020

Saya mencoba membuat perintah untuk crontab untuk mem-tar setiap file baru / yang diperbarui (dari saat cron terakhir dijalankan). Cron harus dijalankan setiap 5 jam.

  1. Saya ingin mencadangkan semua file yang ada di folder /home/swayrainestermasuk subfoldernya
  2. Saya ingin menyimpan tar dengan file-file itu di sini folder/backup/back.tar
  3. Crontab harus dijalankan setiap 5 jam
  4. Hanya file yang telah ditambahkan atau diedit sejak terakhir kali cron dijalankan yang perlu ditambahkan ke arsip. Jadi kecuali itu baru / diedit itu tidak boleh disimpan.
  5. Saya ingin menyimpan hasilnya dalam log dengan stdout dan stderr di sini folder/backup/backlog.log

Jadi saya pikir cara terbaik untuk melanjutkan adalah dengan findfile yang ditambahkan / diedit dalam 5 jam terakhir, dan kemudian tarfile-file itu, sebelum mengeluarkan stdout dan stderr dalam .log tetapi tidak berfungsi dan saya tidak yakin apa yang salah.

Inilah tampilannya sejauh ini (diperbarui untuk menyertakan sebagian jawaban):

  0 */5 * * * find /home/swayraines -mmin -300 -exec tar -zcvf folder/backup/back.tar {} > /folder/backup/backlog.log 2>&1 \;

update Masalahnya adalah saat ini ia membuat arsip tar baru setiap kali crontab dijalankan, dan arsip tersebut hanya berisi file terbaru yang ditambahkan.

perbarui 2 Hanya untuk memperjelas, saya awalnya menyatakan bahwa saya ingin membuat arsip baru setiap 5 jam, tetapi saya ingin memperbarui arsip dan hanya menambahkan file baru. Jadi saya yakin saya perlu mengubah perintah tar menjadi -uvf?

Jawaban

1 Lee3 Dec 01 2020 at 04:27

Gunakan nomor bertanda tangan untuk argumen. 300 berarti diubah tepat 300 menit yang lalu. -300 kurang dari 300 menit yang lalu. +300 akan menjadi lebih dari 300 menit yang lalu.

UPDATE 1

Argumen -execharus diakhiri dengan \;, seperti:

 0 */5 * * * find /home/swayraines -mmin -300 -exec tar -zcvf folder/backup/back.tar {} > /folder/backup/backlog.log 2>&1 \;

Ini akan berjalan tanpa masalah, tetapi karena menjalankan perintah pada 1 file pada satu waktu, Anda hanya akan mendapatkan file terakhir yang dioperasikannya yang dikompresi ke dalam file tar . Saya sarankan Anda menulis perintah untuk menyalin file ke direktori sementara, kompres direktori sementara, dan kemudian hapus direktori sementara.

UPDATE 2

Benar. Anda dapat menggunakan -r --appendatau -u --updatejika Anda ingin menambahkan file yang diubah ke akhir file tar , tetapi file tar harus dibuat terlebih dahulu. Itu tidak akan membuat file jika tidak ada. Penting untuk diperhatikan bahwa perintah ini tidak menimpa versi sebelumnya, oleh karena itu jika Anda tidak memerlukan kedua versi tersebut, Anda harus menggunakan --deleteterlebih dahulu lalu menambahkan versi baru.

Juga, perhatikan bahwa ini bukan file tar terkompresi . Anda tidak dapat memperbarui file tar terkompresi tanpa un / re-compress. Itulah mengapa Anda tidak dapat menggabungkan opsi -zdan -ur.