Uzak bir Linux sunucusundan yerel Mac'ime veri yedeklemek için rsync kullanmak istiyorum. Ve bu işlemi yerel Mac bilgisayarımda başlatmak istiyorum. Özel bir karakter sorunu dışında tüm iyi çalışır: rsync işlemini her çalıştırdığımda (ilk senkronizasyondan sonra), özel karakterlere sahip dosyalar önce silinir ve sonra yeniden senkronize edilir. Anladığım kadarıyla, farklı karakter kümelerinde bir sorun var ve tercih edilen çözüm--iconv
seçeneği kullanmak gibi görünüyor :
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.
Sorun şu ki, bu benim için sadece bir yolla çalışıyor, yani Mac'ten linux'a senkronize ederken. Ama 'öbür tarafa gitmek', yani linux makineden Mac'e senkronize etmek istiyorum. Ve işlemi yerel Mac'imden başlatmak istiyorum. Ama denediğimde:
rsync -av --delete --iconv=utf-8,utf-8-mac mynas:remotedir/ localdir/
Bir hata alıyorum:
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]
Bunun neden işe yaramadığını anlamak için kayboldum. Mac'teki rsync sürümüm 2.6.9'dan güncellendi. 3.1.1. Macports kullanarak . İşlemin Mac'te Linux'tan bir rsync başlattığımda çalıştığını unutmayın:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Ama diğer taraftan gitmek 'mac'tan - ki yapmak istediğim şey - çalışmıyor.
Garip bir şekilde, linux makinesinden senkronizasyonu 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ı?
23 Ekim GÜNCELLEME : Per @Lee Johnson'un mükemmel öneri (aşağıya bakın), linux sunucusundan senkronizasyonu başlatmak artık çalışıyor. Tamlık için, şimdi tüm kombinasyonları denedim ve ilginç bir desen ortaya çıkıyor:
MAC ÜZERİNDE:
ÇALIŞMALARI: Mac'ten Linux'a Dosyalar
FAILS: Linux'tan Mac'e dosyalar
LINUX'TA
ÇALIŞMALARI: Linux'tan Mac'e dosyalar
FAILS: Mac'ten Linux'a Dosyalar
Başka bir deyişle, --iconv
seçenek, yerel makineden uzaktaki dosyalara, diğer yolla değil, yalnızca bir şekilde çalışıyor gibi görünüyor. Benim için bir hata gibi görünüyor, ama belki de böyle çalışmayı ÖNERİLİR?
Bu konuda ışık paylaşabilen var mı?
.DS_Store
Senkronizasyonlardan hariç tutuldum ve bu OSX nedeniyle bu dosyalarla içindeki dizinleri silemedim. Ben karakter setleri --iconv
, mac ile rsync yolu --rsync-path
(homebrew kullanıyorum) ile kurmak ve sonra --delete-excluded
inatçı dizinlerin silinebilmesi için eklemek zorunda kaldı .
rsync
Mac'te özel (örn. homebrew'dan) kullanırken ve--rsync-path="/usr/local/bin/rsync"