rsync ไม่ทำงานระหว่าง NTFS / FAT และ EXT


14

ฉันมีเพลงที่เล่นในรถจากแท่ง USB FAT32 โฟลเดอร์ที่ฉันใช้เพื่อวางเพลงจะถูกเก็บไว้ในฮาร์ดไดรฟ์ EXT4 ของฉัน ฉันเพิ่ม / ลบ / ติดแท็กเพลงใหม่เป็นประจำและบางครั้งต้องการrsyncเปลี่ยนแปลงกับก้าน USB แต่ด้วยเหตุผลบางอย่างที่ไม่รู้จัก (อาจจะมีการอนุญาต?) ให้rsyncคัดลอกไฟล์ทั้งหมดทุกครั้งแทนที่จะเปลี่ยนเพียงไฟล์ ฉันโทรมาrsyncเหมือน:

rsync -vrlptgD source dest

ฉันจะทำให้มันทำงานเหมือนที่ฉันต้องการ (เช่นรู้ว่าเมื่อไม่มีการเปลี่ยนแปลงไฟล์และไม่คัดลอก)

คำตอบ:


18

คำตอบของ Javier Rivera ทำงานได้ แต่ใช้เวลาค่อนข้างนานในการ rsync เพื่อตรวจสอบและเปรียบเทียบไฟล์เช็คซัมทั้งหมด ฉันพบว่าการใช้ตัวเลือกต่อไปนี้ใช้งานได้ดีกว่าสำหรับฉัน:

rsync -rtv --modify-window=1 /source /dest

--modify-window=1สวิตช์ช่วยให้การแปรปรวนของ± 1s ในการประทับเวลาที่ เมื่อเปิดใช้งานตัวเลือกนี้การเปรียบเทียบเวลาประทับจะผ่อนปรนมากขึ้นและตรวจสอบความแตกต่างของเวลาจิ๋วระหว่างระบบไฟล์ NTFS / FAT และ Unix

แหล่งที่มา (ger): http://www.kai-hildebrandt.de/tutorials/rsync.html

PS: โปรดทราบว่า DST จะทำให้การถ่ายโอนไฟล์เต็มปีละสองครั้ง ดูที่นี่สำหรับรายละเอียดเพิ่มเติมและวิธีแก้ไขที่เป็นไปได้


มันเยี่ยมมาก ผมพบว่ายังมีตัวเลือก--iconvที่เป็นประโยชน์เมื่อออกไปจากแหล่ง Linux เพื่อ MacOS ปลายทาง
Wim

2
ด้วยเหตุผลบางอย่างฉันต้องใช้modify-window=2เพราะ=1ยังคงคัดลอกไฟล์ทั้งหมด คัดลอกจาก NTFS ไปยัง FAT32 หลังจากนั้นก็ไม่เป็นไร
Luc

ฉันเพิ่มการ--size-onlyตั้งค่าสถานะเพื่อข้ามไฟล์ที่ตรงกับขนาด
alexandre1985

1
@ alexandre1985: นั่นจะละเว้นไฟล์ที่เปลี่ยนแปลงเนื้อหา แต่ไม่ได้มีขนาด คุณควรใช้มันเฉพาะเมื่อคุณต้องการสำรองไฟล์ที่เปลี่ยนขนาดตลอดเวลาเมื่อพวกเขาเปลี่ยนเนื้อหาเช่นเนื่องจากข้อมูลจะถูกผนวกเข้ากับพวกเขาเท่านั้น แต่ไม่เคยเขียนทับ
David Foerster

11

Timestamps ใน FAT32 นั้นแตกต่างจาก unix ที่พึ่งพาการตรวจสอบการเปลี่ยนแปลงไฟล์คุณควรใช้ -c switch มันจะบังคับให้ rsync เปรียบเทียบไฟล์ทั้งหมดเพื่อตรวจจับการเปลี่ยนแปลงแทนการใช้ timestamps มันจะทำงานได้ แต่มันช้ากว่า

สุดท้ายมีตัวเลือกสองสามอย่างในคำสั่งของคุณที่ไม่สามารถทำงานกับระบบไฟล์ FAT32 ได้

  • -l จะสงวนลิงก์ไว้ FAT32 ไม่มีแนวคิดของลิงก์
  • -p จะพยายามสงวนสิทธิ์อีกครั้งไม่มีสิทธิ์ใน FAT32
  • -t จะพยายามรักษาการแก้ไขการประทับเวลามีการประทับเวลาเพียงครั้งเดียวใน FAT32
  • -g จะพยายามรักษาความเป็นเจ้าของกลุ่มอีกครั้งโดย FAT32 ไม่รองรับ
  • -D จะพยายามเก็บรักษาไฟล์พิเศษและอุปกรณ์ตอนนี้สิ่งที่คุณมาที่นี่

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

นี้:

rsync -vrc source dest

ควรทำงาน (อย่างน้อยมันก็ทำงานบนคอมพิวเตอร์ของฉัน)


3

ฉันมีปัญหาคล้ายกันภายใต้ OSX และคำตอบของ Glutanamate ก็ไม่ได้ช่วยอะไร ไฟล์บางไฟล์แตกต่างกันไปหนึ่งชั่วโมง อาจเป็นเพราะฉันมักจะข้ามเขตเวลาบ่อยครั้ง ไฟล์อื่น ๆ ถูกปิดโดยวันหรือเดือน ฉันไม่แน่ใจว่าทำไมถึงเป็นเช่นนี้ การตรวจสอบผลรวมของไฟล์บางไฟล์ที่มีการประทับเวลาที่แตกต่างกันอย่างมากแสดงให้เห็นว่าพวกเขาเหมือนกันจริง ๆ

ไม่ว่าในกรณีใดดูเหมือนว่า--size-onlyตัวเลือกที่บอกrsyncให้เพิกเฉยต่อการประทับเวลาจะทำงานเพื่อจุดประสงค์ของฉัน -c/ --checksum(ตามที่กล่าวไว้โดย Javier) ก็ใช้งานได้ แต่ใช้เวลานาน ฉันหมดเวลาและใช้เวลาประมาณหนึ่งนาทีในการเปรียบเทียบ checksums ของ GB หรือมากกว่านั้นในไดเรกทอรีย่อยที่ฉันทำงานด้วย แน่นอนความเร็วที่เกิดขึ้นจะขึ้นอยู่กับไดรฟ์ที่ช้าที่สุดในระบบ ในกรณีของฉันนั่นคือการ์ด SD ในโทรศัพท์ของฉัน อย่างไรก็ตามนั่นเป็นหลังจากที่ฉันทำการจัดการไฟล์ (รวมถึงการตรวจสอบ) แล้วไฟล์จำนวนมากอาจถูกคัดลอกไปยังแคช RAM แล้ว


1

คุณควรหลีกเลี่ยงการใช้ตัวเลือก -a ยอดนิยม คำแนะนำของฉันเกี่ยวกับ FAT32 คือ

 rsync -vrc --delete --progress --no-p source  destination

- ไม่ -p: ไม่ได้รับอนุญาต

- ลบ: ลบไฟล์และโฟลเดอร์ที่ไม่ตรงกันในปลายทาง (ถ้าคุณต้องการสิ่งนี้จริงๆ)

--progress: แสดงความคืบหน้าในระหว่างการถ่ายโอน เหมาะสำหรับไฟล์ขนาดใหญ่


1
มี upvote จากฉันแม้ว่าจะเพิ่มเติม-vrcฉันยัง-vrcz
อันโตนีโอ

0

มีการตั้งค่าสถานะมากเกินไป (-vrlptgD) ที่คุณใช้ จำไว้ว่า rsync เป็นยูทิลิตี้ Linux และไม่สามารถใช้งานกับ Fat32 และ NTFS ได้อย่างมีประสิทธิภาพ

คุณจะต้องตามล่าหาลูกเล่นเพื่อให้สามารถใช้งานได้

ลอง:

rsync -rvh --size-only --progress --delete /path/to/ext4/ /path/to/fat32/

ข้อมูลเพิ่มเติมที่นี่

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