ข้อผิดพลาด Rsync 23: ฉันสามารถบอกได้ว่าไฟล์ใดไม่ถูกถ่ายโอน?


32

ฉันวิ่งsudo rsync -va --progressจากรากของไดรฟ์ภายนอกหนึ่งไปยังโฟลเดอร์หนึ่งในไดรฟ์ภายนอกอื่น เหตุผลก็คือไดรฟ์ต้นฉบับมีข้อผิดพลาด NTFS และฉันไม่สามารถเข้าถึงพีซี Windows เพื่อซ่อมแซม NTFS

10 ชั่วโมงต่อมาก็กล่าวว่า:

sent 608725204596 bytes  received 19365712 bytes  15902210.53 bytes/sec
total size is 608586212274  speedup is 1.00
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(992) [sender=2.6.9]

ฉันบันทึกเอาต์พุตของเทอร์มินัลทั้งหมด ในตอนแรกมีInput/output error (5)ไฟล์สองสามร้อยสำหรับไฟล์ที่ฉันไม่ต้องการรวมประมาณ 2GB OSX Finder "การใช้ดิสก์" บอกฉันว่าแหล่งที่มาคือ 617 พันล้านไบต์ไม่ใช่ 608 ดังในรายงานด้านบน

คำถาม:

  1. ส่วนแรกของเอาต์พุต verbose (สร้างรายการไฟล์) แน่นอนว่าจะพูดInput/output error (5)กับไฟล์ทุกอย่างที่จะไม่ถูกคัดลอกหรือไม่?
  2. ไม่code 23หมายถึงว่าไฟล์ทั้งหมดยกเว้นInput/output error (5)คนที่ถูกคัดลอกประสบความสำเร็จ?

1
อาจมีประโยชน์: ข้อความแสดงข้อผิดพลาด rsync เริ่มต้นด้วย "rsync:" ดังนั้นgrep '^rsync: ' outputอาจมีประโยชน์
barrycarter

คำตอบ:


19

23 หมายถึงเฉพาะ (จากหน้าคน):

23 การถ่ายโอนบางส่วนเนื่องจากข้อผิดพลาด

สำหรับทุกสิ่งที่ไม่สามารถถ่ายโอนได้คุณจะได้รับข้อความแสดงข้อผิดพลาด โปรดทราบว่าข้อความแสดงข้อผิดพลาดอาจเกี่ยวกับการเปิดหรืออ่านไดเรกทอรีดังนั้นคุณไม่จำเป็นต้องเห็นข้อความแสดงข้อผิดพลาดสำหรับแต่ละไฟล์ที่ไม่สามารถถ่ายโอนได้

หากแหล่งที่มาของคุณไม่เปลี่ยนแปลงคุณสามารถเรียกใช้rsyncอีกครั้งด้วย-nเพื่อดูว่ามันจะถ่ายโอนในเวลานี้โดยไม่ต้องทำการถ่ายโอนจริง

เกี่ยวกับความแตกต่างของไบต์rsyncให้ขนาดของไฟล์ (ข้อมูลที่สามารถอ่านได้จากไฟล์เหล่านั้น) คุณแน่ใจหรือFinderว่าไม่ได้บอกการใช้งานดิสก์แทน

นอกจากนี้โปรดทราบว่า NTFS สามารถจัดเก็บข้อมูลในสตรีมสำรองหรือคุณลักษณะของไฟล์และrsyncโดยทั่วไปจะไม่ถ่ายโอน (ไม่ทราบ) ไฟล์เหล่านั้น (และที่สามารถบัญชีได้มากเช่นกัน)


คุณกำลังบอกว่าข้อมูลทั้งหมด (ไม่ว่าจะเสียหายอย่างไร) ที่ไม่ถูกถ่ายโอนนั้นถูกระบุไว้ในตอนต้นว่าเป็นInput/output error (5)?
themirror

เกี่ยวกับความแตกต่างของไบต์: ใช่ว่าถูกต้อง ฉันสับสนว่าทำไมความแตกต่างระหว่างรายงาน rsync และ "การใช้ดิสก์" ของ Finder's คือ 9 พันล้านไบต์ แต่ฉันสามารถระบุไฟล์ได้เพียง 2-3 พันล้านไบต์เท่านั้นที่กล่าวInput/output error (5)ไว้ คุณสามารถอธิบาย?
ธีมสยองขวัญ

1
@themirror ไฟล์ขนาด 1 ไบต์จะยังคงต้องจัดสรรกี่กิโลไบต์บนดิสก์เพื่อเก็บไว้ (ลองecho > file; du -k fileดูว่าระบบไฟล์ต้นทางมีเท่าไร แต่ใน ntfs มักจะเป็น 4k) rsyncจะบอกคุณว่าขนาดคืออะไร1แต่ Finder อาจบอกคุณ 4096 สำหรับไฟล์นั้น
Stéphane Chazelas

@themirror, wrt ความคิดเห็นแรกของคุณฉันกำลังบอกว่าสำหรับทุกสิ่ง (เนื้อหาไฟล์ดูการแก้ไขของฉันเกี่ยวกับสตรีมสำรอง) ที่ไม่สามารถถ่ายโอนได้คุณจะได้รับข้อผิดพลาด แต่ถ้าคุณไม่สามารถอ่านไดเรกทอรี / fooแน่นอนแล้ว/foo/barและ/foo/bar/bazจะไม่ถูกถ่ายโอนเช่นกัน
Stéphane Chazelas

17

คุณสามารถปิดเสียงเอาต์พุตที่ไม่ใช่ข้อผิดพลาดของ rsync ได้โดยใช้-qแฟล็กของ rsync

-q, --quiet                 suppress non-error messages

หากคุณเรียกใช้ rsync อีกครั้งด้วย -qตั้งค่าสถานะ rsync จะยังคงล้มเหลว แต่อย่างน้อยในเวลานี้ข้อความแสดงข้อผิดพลาดใด ๆ ที่ทำให้เกิดปัญหาของคุณจะไม่ถูกฝังอยู่ภายใต้บรรทัดและบรรทัดของข้อความสถานะการถ่ายโอนไฟล์


2

Re: ข้อผิดพลาด 23-- สาเหตุที่พบบ่อยที่สุดในการมีข้อผิดพลาดนี้คือการพิมพ์ผิดเล็กน้อยในแหล่ง rsync ดูที่คำสั่งซอร์สของคุณและตรวจสอบให้แน่ใจว่าทุกอย่างตรวจสอบกับ ls และมองหาสิ่งที่บอบบางอย่างโง่เง่าเช่นพื้นที่พิเศษหรือปัญหา 1-l


ฉันรู้ว่ามันโง่ แต่ฉันก็ไปเส้นทางเพื่อขุดผ่านรหัสจนกว่าฉันจะรู้ว่าฉันทำผิดพลาดเป็นใบ้ ขอขอบคุณ!
rburhum
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.