rsync không hoạt động giữa NTFS / FAT và EXT


13

Tôi có nhạc mà tôi chơi trong xe hơi, từ thanh USB FAT32. Thư mục mà tôi sử dụng để đặt các bài hát được lưu trữ trên ổ cứng EXT4 của tôi. Tôi thêm / xóa / retag các bài hát thường xuyên và thỉnh thoảng muốn rsyncthay đổi thanh USB. Nhưng vì một số lý do không xác định (có thể là quyền?), rsyncSao chép tất cả các tệp mỗi lần thay vì chỉ thay đổi. Tôi đang gọi rsyncnhư:

rsync -vrlptgD source dest

Làm cách nào tôi có thể làm cho nó hoạt động như tôi muốn (tức là biết khi nào một tệp chưa được thay đổi và không sao chép nó)?

Câu trả lời:


17

Câu trả lời của Javier Rivera hoạt động, nhưng phải mất khá lâu để rsync kiểm tra và so sánh tất cả các tổng kiểm tra tệp. Tôi thấy rằng sử dụng tùy chọn sau làm việc tốt hơn cho tôi:

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

Công --modify-window=1tắc cho phép phương sai ± 1s trên dấu thời gian. Với tùy chọn này được bật, so sánh dấu thời gian sẽ nhẹ nhàng hơn và xem xét sự khác biệt về thời gian rất nhỏ giữa các hệ thống tệp NTFS / FAT và Unix.

Nguồn (ger): http://www.kai-hildebrandt.de/tutorials/rsync.html

PS: Xin lưu ý rằng DST sẽ gây ra chuyển tập tin đầy đủ hai lần một năm. Xem ở đây để biết thêm chi tiết và giải pháp có thể.


Điều đó thật tuyệt. Tôi cũng tìm thấy tùy chọn --iconvhữu ích khi đi từ nguồn linux sang MacOS
wim

2
Vì một số lý do tôi cần sử dụng modify-window=2=1vẫn sao chép tất cả các tập tin. Sao chép từ NTFS sang FAT32. Sau đó, nó vẫn ổn.
Luc

Tôi đã thêm --size-onlycờ để bỏ qua các tệp khớp với kích thước
alexandre1985

1
@ alexandre1985: Điều đó sẽ bỏ qua các tệp thay đổi nội dung của chúng nhưng không phải kích thước của chúng. Bạn chỉ nên sử dụng nó khi bạn chỉ muốn sao lưu các tệp luôn thay đổi kích thước khi chúng thay đổi nội dung, ví dụ: vì dữ liệu chỉ được thêm vào chúng nhưng không bao giờ bị ghi đè.
David Foerster

11

Dấu thời gian trong FAT32 quá khác so với unix dựa vào chúng để kiểm tra thay đổi tệp, bạn cũng nên sử dụng công tắc -c, nó sẽ buộc rsync so sánh tất cả các tệp để phát hiện thay đổi thay vì dựa vào dấu thời gian. Nó sẽ hoạt động, nhưng nó chậm hơn.

Cuối cùng, có một vài tùy chọn trong lệnh của bạn không thể hoạt động với các hệ thống tệp FAT32.

  • -l sẽ giữ liên kết, FAT32 không có khái niệm về liên kết
  • -p sẽ cố gắng duy trì quyền, một lần nữa không có quyền trên FAT32
  • -t sẽ cố gắng duy trì dấu thời gian sửa đổi, chỉ có một dấu thời gian trên FAT32
  • -g sẽ cố gắng duy trì quyền sở hữu nhóm, một lần nữa không được hỗ trợ bởi FAT32
  • -D sẽ cố gắng bảo quản các tập tin và thiết bị đặc biệt, bây giờ bạn sẽ đến đây.

Theo nhận xét htorque, các tùy chọn không hợp lệ sẽ không làm tổn thương bạn, họ sẽ không làm gì cả. Nhưng bạn phải thêm công tắc -c.

Điều này:

rsync -vrc source dest

nên hoạt động (ít nhất là nó hoạt động trên máy tính của tôi).


3

Tôi đã gặp vấn đề tương tự theo OSX và câu trả lời của Glutanamate không giúp được gì. Một số tệp khác nhau một giờ; điều này có thể là do tôi có xu hướng xuyên qua các múi giờ tương đối thường xuyên. Các tập tin khác được tắt một ngày hoặc thậm chí một tháng. Tôi không chắc tại sao lại như vậy. Kiểm tra trên một số tệp có dấu thời gian khác nhau cho thấy chúng thực sự giống hệt nhau.

Trong mọi trường hợp, có vẻ như --size-onlytùy chọn, thông rsyncbáo bỏ qua dấu thời gian, sẽ hoạt động cho mục đích của tôi. -c/ --checksum(như được đề cập bởi Javier) cũng hoạt động, nhưng mất nhiều thời gian hơn. Tôi đã tính thời gian và mất khoảng một phút để so sánh tổng kiểm cho GB hoặc hơn trong thư mục con tôi đang làm việc. Tất nhiên tốc độ xảy ra điều này sẽ phụ thuộc vào ổ đĩa chậm nhất trong hệ thống; trong trường hợp của tôi, đó là thẻ SD trong điện thoại của tôi. Tuy nhiên, đó là sau khi tôi đã thực hiện một số thao tác tệp (bao gồm cả kiểm tra), vì vậy nhiều tệp có thể đã được sao chép vào bộ đệm RAM.


1

Bạn cũng nên tránh sử dụng tùy chọn -a phổ biến. Đề xuất của tôi về FAT32 là

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

--no-p: không được phép

--delete: xóa các tập tin và thư mục chưa từng có ở đích (nếu bạn thực sự muốn điều này)

--proceed: hiển thị tiến trình trong quá trình chuyển. Nó là tốt cho các tập tin lớn.


1
Có một upvote từ tôi mặc dù ngoài ra -vrc, tôi cũng vậy-vrcz
Antony

0

Đó là quá nhiều cờ (-vrlptgD) bạn đang sử dụng. Hãy nhớ rằng, rsync là một tiện ích Linux và không hoạt động với Fat32 và NTFS một cách hiệu quả.

Bạn sẽ phải săn lùng các thủ thuật để có thể sử dụng nó.

Thử:

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

Thêm thông tin ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.