Mac ve Linux arasında çalışmayan özel karakter dosyalarına sahip Rsync


18

Ubuntu sunucumu Mac'te bulunan bir diskle yedeklemek için rsync kullanmak istiyorum. Ancak düzgün çalışmıyorum, çünkü ilk kez rsync işlemini her çalıştırdığımda, özel karakterlere sahip dosyalar önce silinir ve sonra yeniden senkronize edilir. Farklı karakter kümelerinde bir sorun varmış gibi görünüyor.

Tercih çözüm kullanmak gibi görünüyor --iconvseçeneği:

En azından Mac kullanıyorsanız, UTF-8 NFC ve NFD arasında dönüştürme yapmak için rsync'in --iconv seçeneğini kullanabilirsiniz. UTF-8 NFD anlamına gelen özel bir utf-8-mac karakter seti vardır. Mac'inizden NAS'ınıza dosya kopyalamak için aşağıdakine benzer bir şey çalıştırmanız gerekir:

rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

Bu, tüm yerel dosya adlarını UTF-8 NFD'den uzak sunucudaki UTF-8 NFC'ye dönüştürür. Dosyaların içeriği etkilenmez.

@Jan sayesinde, rsync sürümümü mac bilgisayarımda 2.6.9'dan güncelledim . 3.1.1. Hala başka bir hata aldığım için hala orada değilim:

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]

Benim Ubuntu (12.04) rsync sürümü sonrası 3.xx olduğu ve bu nedenle --iconvseçeneği desteklemesi gerektiği için neden "istenen eylem desteklenmiyor" anlamak için kayıp .

DÜZENLEME: Ben (Mac, nota bene) Mac'ten Linux'a bir rsync başlattığımda, her şeyin görkemli bir şekilde çalıştığını ekleyeyim:

rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

Ama diğer taraftan gitmek 'mac çalışmıyor. Garip bir şekilde, lins makinesinden rsync'i başlatmak için test yapmak bu garip mesajı veriyor:

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]

[server=2.6.9]Mac'te 3.1.1'e güncellememe rağmen çok garip iddia da dahil . Bazı nedenlerden dolayı, linux makinem Mac'te sadece orijinal rsync sürümünü 'görüyor'.

Bunun nasıl çözüleceğine dair herhangi bir öneriniz var mı?

Yanıtlar:


18

Çözüm utanç verici derecede basitti: Sorunu araştırırken okuduğum bir yorumdan dolayı, karakter setini dönüşüm sırasına göre belirtmeniz gerektiğini düşündüm; ancak bu doğru sözdizimi gibi görünmüyor. Aksine, tek gerektiğini hep kullanmak --iconv=utf-8-mac,utf-8mac dan rsync'i başlatılıyor ne zaman ve daima kullanmak --iconv=utf-8,utf-8-maclinux makineden rsync'i başlatılıyor zaman olursa olsun mac veya linux makineden senkronizasyon dosyaları istiyorum.

Sonra sihir gibi çalışır!

EDIT: Aslında, bazen, manuel sayfayı yakından kontrol etmek iyi bir şeydir. İşte beyaz, siyah:

--iconv=CONVERT_SPEC
              Rsync  can  convert  filenames between character sets using this
              option.  Using a CONVERT_SPEC of "." tells rsync to look up  the
              default  character-set via the locale setting.  Alternately, you
              can fully specify what conversion to do by giving a local and  a
              remote   charset   separated   by   a   comma   in   the   order
              --iconv=LOCAL,REMOTE, e.g.  --iconv=utf8,iso88591.   This  order
              ensures  that the option will stay the same whether you're push-
              ing  or  pulling  files.

Uhm ... bana Ubuntu'dan Amazon S3'e oluyor ...: |
Tom Roggero

Boşver! AWS CLI benim için düzeltti.
Tom Roggero

Siyah üzerine beyaz;)
Merhaba Dünya

3

Bu çalışmaları onaylayabilirim, aynı sorunu yaşıyordum. Benim durumumda aksanlı bir karaktere sahip herhangi bir dosya hedefte okunamıyor. Yalnızca Mac'imde Klasörleri Karşılaştır uygulamasını kullanarak bir klasör karşılaştırması çalıştırarak tespit ettim: https://itunes.apple.com/gb/app/compare-folders/id816042486?mt=12

Yukarıdaki --iconv = utf-8-mac, utf-8 ve BOOM eklendi! rsync, aksanlı her dosyayı yenisiyle değiştirdi.

Yukarıdaki bağlantıların artık çalışmadığı gibi bazı bilgiler eklemek için rsync'i 3.1.2'ye yükseltmek, Macports'u yüklemek ve çalıştırmak: sudo port install rsync

Uzak sunucunun 2.6.9 sürümünü döndürdüğünü görmenizin nedeni, eski sürümün hala orada olması ve uzak sunucunun bunu yenisinin yerine görmesidir.

2.6.9 sürümü / usr / bin dizininde bulunur

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.