rsync via cron. Bagaimana cara mengaktifkan logging?

8

Saya mencadangkan server jauh ke komputer lain menggunakan rsync.

Dalam cron.daily saya punya file dengan ini:

rsync -avz -e ssh [email protected]:/ /mybackup/

Menggunakan pasangan kunci publik / pribadi untuk login. Ini tampaknya bekerja dengan baik sebagian besar waktu namun, saya (bodohnya) hanya pernah benar-benar memeriksanya dengan melihat tanggal pada beberapa file penting (MySQL dumps) yang saya tahu berubah setiap hari. Jelas, kesalahan dapat terjadi setelah file itu.

Terkadang gagal. Ketika saya menjalankannya secara manual, sesuatu seperti "reset klien" terkadang terjadi.

Apa cara terbaik untuk mencatatnya sehingga saya dapat memeriksa dengan pasti apakah sudah lengkap atau tidak? Log cron tidak menunjukkan kesalahan apa pun. Saya belum mencobanya tetapi halaman manual rsync pada versi lama CentOS pada mesin cadangan tidak menunjukkan opsi --log-file. Saya kira saya bisa mengarahkan ulang stdout dengan> tetapi saya tidak benar-benar ingin tahu tentang setiap file. Saya hanya ingin tahu apakah semuanya bekerja atau tidak ..

Terima kasih

tetranz
sumber

Jawaban:

13

Saya pikir Anda sudah menyelesaikan pertanyaan Anda sendiri. Jika Anda mengarahkan ulang stdout dan stderr ke file, Anda tidak akan mendapatkan output untuk setiap transfer file rsync - ini hanya diproduksi jika Anda menjalankan dalam -vmode verbose ( ). Perilaku default rsyncadalah hanya menghasilkan output jika terjadi kesalahan. Jadi kamu bisa melakukan ini ...

rsync ... > /var/log/rsync.log 2>&1

... dan periksa file itu untuk melihat apakah rsync terbaru berhasil atau tidak. Saya secara eksplisit menggunakan >, yang akan menimpa file log setiap kali rsyncberjalan.

Anda juga dapat memanfaatkan fakta yang rsynckeluar dengan kode bukan nol saat transfer gagal, sehingga Anda dapat melakukannya seperti ini:

rsync ... || echo "rsync failed" | mail -s 'rsync falied' [email protected]
larsks
sumber
Terima kasih. Saya akan mencobanya. Saya berasumsi saya akan mendapatkan setiap file dalam log karena itulah yang saya lihat di layar jika saya mencobanya secara manual tanpa verbose. Masalah surat terlihat bagus.
tetranz
Jika Anda menjalankan rsync secara manual tanpa -vtanda dan Anda masih melihat keluaran per file, ada yang salah. Halaman manual rsync mengatakan, "Secara default, rsync bekerja secara diam-diam. Satu -v akan memberi Anda informasi tentang file apa yang sedang ditransfer dan ringkasan singkat di akhir."
larsks
Ya, itulah yang terjadi. -v tampaknya aktif secara default. Saya baru saja melakukan pengalihan log seperti yang Anda sarankan dan log memiliki garis untuk setiap file. Saya tidak mengatakan Anda salah. CentOS harus mengkompilasi rsync secara berbeda. Saya telah menambahkan tidak termasuk untuk / proc dan / sys.
tetranz
Saya menjalankan CentOS, dan rsync berperilaku seperti yang dijelaskan. Seperti apa sebenarnya baris perintah Anda?
larsks
1
Lihat, Anda sedang menjalankan dalam mode verbose. Anda punya di -vsana.
larsks
4

Keluarkan opsi -v dan tambahkan -q. Ini hanya akan memberikan kesalahan

Mat
sumber
1

Mungkin Anda bisa menggunakan syslog melalui perintah: logger .

Saya menjalankan skrip dengan cara ini:

rsync -v what user@host 2>&1 | logger -t backup

Ini akan menulis ke /var/log/messagessecara default.

pengguna897079
sumber