Perbarui crontab ke file baru / yang diperbarui setiap 5 jam
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.
- Saya ingin mencadangkan semua file yang ada di folder
/home/swayraines
termasuk subfoldernya - Saya ingin menyimpan tar dengan file-file itu di sini
folder/backup/back.tar
- Crontab harus dijalankan setiap 5 jam
- 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.
- 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 find
file yang ditambahkan / diedit dalam 5 jam terakhir, dan kemudian tar
file-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
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 -exec
harus 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 --append
atau -u --update
jika 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 --delete
terlebih 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 -z
dan -ur
.