Tôi muốn sử dụng rsync để sao lưu máy chủ Ubuntu của mình với một đĩa nằm trên máy Mac. Nhưng tôi không làm cho nó hoạt động chính xác, vì mỗi lần tôi chạy lại hoạt động rsync sau thời gian ban đầu, các tệp có ký tự đặc biệt sẽ bị xóa đầu tiên và sau đó được đồng bộ hóa lại. Có vẻ như có vấn đề với các bộ ký tự khác nhau.
Các giải pháp ưu tiên có vẻ là để sử dụng các --iconv
tùy chọn:
Bạn có thể sử dụng tùy chọn --iconv của rsync để chuyển đổi giữa UTF-8 NFC & NFD, ít nhất là nếu bạn đang sử dụng máy Mac. Có một bộ ký tự utf-8-mac đặc biệt là viết tắt của UTF-8 NFD. Vì vậy, để sao chép các tệp từ máy Mac sang NAS, bạn cần chạy một cái gì đó như:
rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Điều này sẽ chuyển đổi tất cả tên tệp cục bộ từ UTF-8 NFD sang UTF-8 NFC trên máy chủ từ xa. Nội dung của tệp sẽ không bị ảnh hưởng.
Nhờ @Jan, tôi đã cập nhật phiên bản rsync trên máy mac của mình từ 2.6.9. đến 3.1.1. Tuy nhiên, tôi vẫn không hoàn toàn ở đó, vì bây giờ tôi nhận được một lỗi nữa:
iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]
Tôi không hiểu tại sao "hành động được yêu cầu không được hỗ trợ" vì có vẻ như phiên bản rsync trên Ubuntu của tôi (12.04) là bài 3.xx và do đó sẽ hỗ trợ --iconv
tùy chọn này.
EDIT: Hãy để tôi nói thêm rằng khi tôi (trên Mac, nota bene) khởi tạo rsync TỪ Mac ĐẾN Linux, mọi thứ đều hoạt động tuyệt vời:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Nhưng đi theo cách khác 'từ mac không hoạt động. Thật kỳ lạ, thử nghiệm để khởi tạo rsync từ máy linux sẽ hiển thị thông báo lạ này:
rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
bao gồm cả yêu cầu rất lạ [server=2.6.9]
, mặc dù tôi đã cập nhật lên 3.1.1 trên Mac. Vì một số lý do, có vẻ như máy linux của tôi 'chỉ thấy' phiên bản rsync gốc trên Mac.
Bất kỳ đề nghị về cách giải quyết này?