rsync command deletion error “IO erroremui - melewatkan penghapusan file”

16

Saya menggunakan perintah rsync untuk mengambil cadangan file dari salah satu server ubuntu saya ke mesin ubuntu lain. Server cadangan memicu skrip yang menggunakan perintah rysnc. Inilah perintah yang saya gunakan

rsync -rltvh --partial --stats --exclude = .beagle / --exclude =. * --delete-after root @ live_server: / home / / home / live_server_backup / home >> /tmp/logfile.log 2> & 1

live_server ssh-mampu tanpa kata sandi. Jadi itu berhasil. Sekarang masalahnya dengan

--delete-after option

Setelah semua file disinkronkan. Pada akhirnya saya bisa melihat prosedur penghapusan kesalahan skipped.logfile seperti

Terjadi kesalahan IO - melewatkan penghapusan file

Ketika saya mencoba menemukan log ada beberapa kesalahan saat sinkronisasi file

rsync: send_files gagal membuka "/home/xyz/Desktop/PPT_session_1_context.pdf": Izin ditolak (13)

Jadi pemahaman saya adalah karena rsync tidak bisa membaca semua file dari target karena alasan keamanan itu melewatkan penghapusan file.

Apakah ada cara untuk membuat --delete-after work bahkan jika ada kesalahan izin? Saya tidak ingin menggunakan penghapusan paksa karena akan berbahaya dalam beberapa situasi.

XemX
sumber
1
Pssst lagi ... Anda benar-benar harus.
Armel Larcier

Jawaban:

13

Catatan tambahan tentang masalah ini:

vanished fileseharusnya tidak memicu kondisi IO error encountered -- skipping file deletion, tetapi ini sering terjadi ketika Anda membuat cadangan dari sistem live.

Ini dicakup oleh rsync bug # 7809 ( https://bugzilla.samba.org/show_bug.cgi?id=7809 ) dan harus diselesaikan dalam rilis 3.1.0 mendatang.

Sementara itu gunakan:

--ignore-errors         delete even if there are I/O errors
reto
sumber
19

Dari halaman manual rsync:

--ignore-errors         delete even if there are I/O errors

Itu akan mengatasi masalah Anda.

SickAnimations
sumber
2

Anda harus menggunakan file pengecualian untuk rsyncmengabaikan file yang tidak bisa dibaca. Daftar dapat dihasilkan dengan find . -exec test -r '{}'di direktori sumber dan kemudian dipijat ke dalam format file pengecualian yang rsyncdiinginkan.

Kyle Jones
sumber
sebenarnya direktori sumber saya cukup besar (10-12GB). Jadi setiap kali mencari file (tanpa izin baca) tidak akan efisien. apa yang kau katakan?
XemX
Jalankan sekali untuk membangun daftar pengecualian dan jangan menjalankannya lagi kecuali sejumlah besar file yang tidak dapat dibaca baru ditambahkan. rsync melakukan traversal pohon yang sama, jadi tidak seharusnya seburuk itu.
Kyle Jones
Iya. Tapi begitulah skenario saya. Direktori sumber setiap hari dapat memperkenalkan file-file tersebut. dan saya perlu membuat cadangan file baru ke mesin cadangan.
XemX
Apakah ada solusi untuk ini? Saya juga menggunakan rsync untuk backup dari sistem live dan ketika ada kesalahan I / O pada mesin baca, file-file tersebut dihapus pada mesin target, yang TIDAK HARUS TERJADI!
bzero