3 puan yazan GN⁺ 2023-09-24 | 1 yorum | WhatsApp'ta paylaş
  • iCloud Drive’daki gizli dosya çakışması nedeniyle yakın zamanda yazılan paragraflar veya kod değişiklikleri kayboldu; kayıp, yedekler kaydedilmeden önce gerçekleşti
  • Çakışma, Mac ve iPhone’da aynı dosyanın farklı sürümleri olduğu varsayılan bir durumda ortaya çıktı; ancak sorunlu dosya iPhone’da hiç açılmamıştı
  • Dropbox çakışan dosyayı ayrı olarak bırakır; iCloud Drive ise bunu dosya sisteminde göstermediği için seçim açılır penceresi yalnızca çakışma işlemeyi destekleyen düzenleyicilerde görülebiliyor
  • Textifier, Xcode, Obsidian gibi çakışma işlemesi olmayan düzenleyicilerde hangi sürümün kaydedileceğine iCloud karar veriyor; zaman geçtikçe doğru sürüm yedekte üzerine yazılabilir
  • Önemli verileri iCloud Drive’ın dışında tutmak ve kritik dosyalardaki değişiklikleri bir Git deposu ile izlemek daha güvenli; iCloud’da kalması gereken dosyalar için Cloud Cub da geliştiriliyor

iCloud Drive’ın gizli dosya çakışması

  • Belge yazarken az önce girilen bir paragraf kayboldu; uygulama geliştirirken de Xcode, daha önce sorunsuz olan kodda birden fazla hata gösterdi
    • Birden çok dosyadaki son değişiklikler silinmiş durumdaydı
    • Kayıp, Time Machine veya Backblaze bunları kaydetmeden önce gerçekleşti
  • Neden, iCloud Drive’ın algıladığı dosya çakışmasıydı
    • iCloud Drive, Mac ve iPhone’da aynı dosyanın farklı sürümleri bulunduğunu ve bunları otomatik olarak birleştiremeyeceğini düşündü
    • Ancak etkilenen dosyalar iPhone’da hiç açılmamıştı
    • Mac’in Documents klasörü iCloud’a taşınmış olduğundan bu dosyalar iCloud’daydı
  • Dropbox’ta sürüm çakışması oluştuğunda, “(John Doe’s conflicted copy)” gibi adlandırılmış çakışan dosya da birlikte kaydedilir
  • iCloud Drive aynı çakışmayı dosya sisteminde göstermez
    • Dosya, çakışma işlemeyi destekleyen bir düzenleyicide açıldığında hangi sürümün tutulacağını soran bir açılır pencere görünür
    • Textifier, Xcode, Obsidian gibi çakışma işlemesi olmayan düzenleyicilerde diske ve yedeklere hangi sürümün kaydedileceğine iCloud karar verir

Kurtarma koşulları ve yapılabilecekler

  • Zaman geçip yeni bir yedek, doğru sürümü içeren eski yedeğin üzerine yazarsa içerik kalıcı olarak kaybolabilir
  • Kurtarmak için ilgili dosyayı çakışma çözümlemeyi destekleyen bir düzenleyiciyle açmak gerekir
    • Örnek olarak kullanılan düzenleyici iA Writer
    • Dosya iCloud Drive’ın dışına taşındıktan sonra bu yöntem de yardımcı olmaz
    • Testlerde, değiştirilmemiş dosya tekrar iCloud’a taşındığında çakışan sürüm açılır penceresi yeniden göründü; ancak dosya düzenlenmişse veya bir kopya üzerinde çalışmaya devam edilmişse bu böyle olmayabilir
  • Sürüm çakışmalarını gizleme yaklaşımı kullanıcı dostu görünebilir; ancak önemli bir belgeyi yıllar sonra yeniden açana kadar veri kaybını fark etmeyebilirsiniz
  • iCloud Drive sürüm çakışmalarını dosya sisteminde veya kolay erişilebilir merkezi bir konumda görünür hâle getirene kadar önemli verileri iCloud Drive’ın dışına taşımak daha güvenli
  • iCloud Drive’da kalması gereken dosyalar için gizli eşzamanlama çakışmalarını algılayıp çözen Cloud Cub geliştiriliyor

1 yorum

 
GN⁺ 2023-09-24
Hacker News görüşleri
  • Benzer bir şey yaşadım: Eşimin iPhone’undaki Notes’ta bulut senkronizasyonu açıktı; gerek olmadığını düşünüp kapattım, eşim de “Bütün notlarım nereye gitti? Ne yaptın?” dedi.
    Soğuk terler döktüm ama senkronize Notes uygulamasının bulunduğu bir iPad aklıma geldi; hemen açıp WiFi’ı kapatarak notları “korudum”.
    Apple’ı aradım ve destek görevlisi, her notu yeni bir klasöre kopyalayıp yapıştırarak silinmemesini sağlayabileceğimiz bir yöntem buldu.
    Birkaç saat boyunca epey stresliydi; Apple’ın bu tür işlemlerin tüm etkisi konusunda daha fazla uyarı veya açılır pencere göstermesi gerektiğini düşünüyorum.
    Ayrıca Apple teknik desteğinin telefona fiilen “VNC” gibi bağlanıp bakabildiğini ve ayarları değiştirebildiğini de öğrendim. Sanırım izin istemişlerdi ve ben de “onayla”ya basmıştım ama bunu gerçekten görmeden önce böyle bir özelliğin varlığından bile haberim yoktu.

    • Bu sorunu mazur göstermeye çalışmıyorum ama bir Apple görevlisinin Notes senkronizasyonu sorununda telefonda yardımcı olup kurtarmayı bile sağlaması şaşırtıcı.
      Üstelik neden, kişinin kendi hatası gibi görünmesine rağmen yardım ettiler. Şirketimiz Google ürünlerine çok para ödüyor ama Google’ın böyle bir konuda telefonda yardımcı olma ihtimali neredeyse yok.
      Daha önce erişim kontrolü gibi konularda bir yetkiliyle konuşmuştum ama Keep notları kaybolduğunda yardım istesem kibarca defolup gitmemi söyleyeceklerini düşünüyorum. Gerçekten de Keep notları da ara sıra kayboluyor.
    • Aklımdaki durum buysa, sadece senkronizasyonu yeniden açınca tüm notlar geri gelmiş olmalıydı.
    • Hatırladığım kadarıyla senkronizasyonu kapatırken “Devam etmek istiyor musunuz? Tüm iCloud notları iPhone’dan kaldırılacak” diye soruyor.
      Eşinin sorunu Apple’dan çok iOS cihazını yöneten kişi tarafındaymış gibi görünüyor.
    • Apple teknik desteğinin telefona “VNC” gibi girip içeriği görebilmesi ve ayarları değiştirebilmesi potansiyel bir güvenlik açığı gibi görünüyor. Bunu kalıcı olarak kapatmanın bir yolu var mı merak ediyorum.
    • O “VNC” özelliği hakkında daha fazla ayrıntı merak ediyorum. Yalnızca iPad’e mi özel, iOS’ta da çalışıyor mu, onay isteği sistem açılır penceresi miydi, adı olan bir uygulama mı açıldı, ekranda gerçekten ne yaptıkları görülebiliyor muydu, bir yerde dokümante edildi mi merak ediyorum.
  • Gerçekten milyon kez katılıyorum. Ama bu yalnızca iCloud’a özgü bir sorun değil; Apple yazılımının genelinde görülen temel bir eğilim gibi duruyor.
    Books’ta PDF’lere fosforlu işaret koyarken de bunu tekrar tekrar yaşadım. Bazen PDF’yi yeniden açtığımda, yakın zamanda işaretlediğim birkaç sayfanın kaybolduğunu görüyorum.
    Çalışırken sürekli kaydediliyor gibi görünse de bilinmeyen bir nedenle 11:45 sürümü yerine 11:35 sürümünü en güncel ana sürüm olarak değerlendiriyor.
    Apple’ın yeni içeriği sessizce eski bir sürümle üzerine yazması sorunu en az 10 yıldır devam ediyor.
    Böyle ölümcül bir kusurun başta sisteme nasıl girdiğini ve hâlâ neden düzeltilmediğini anlamıyorum.

    • Yazılımdaki en zor iki problem cache invalidation, isimlendirme, off-by-one hataları ve dizi indekslerinde zorunlu sınır kontrolü olmamasından kaynaklanan buffer overflow’lardır.
    • macOS’un varsayılan yazılımıyla fosforlu işaret veya açıklama eklerken ben de çeşitli tuhaf şeyler yaşadım; Skim oldukça iyi bir alternatifti.
      Ücretsiz ve BSD lisanslı, ancak değişiklikleri diğer uygulamalarda da görmek istiyorsanız açıklama eklenmiş PDF olarak dışa aktarmanız gerektiğini unutmamak lazım.
      Apple’ın kontrastı öldüren turuncumsu arka planından veya gerçek sarı fosforlu kalem olmamasından bıkanlar için denemeye değer. İlgim yok, sadece var olduğu için minnettarım.
      https://skim-app.sourceforge.io/
    • İlginç bir nokta. Apple bilgisayarları zaman zaman kullandım; son dönemde de 2015’ten bu yılın başına kadar kullandım ve bunun bir felsefe meselesi olduğu fikri bana makul geliyor.
      Donanım tarafında da floppy diskleri, optik sürücüleri ve CPU mimarisinin tamamını üç kez oldukça acımasızca kestiklerini hatırlıyorum.
      iCloud’da bu tutum sanki dosyalara da uygulanıyor. Hepsinin kötü olduğunu söylemem ama yaşım ilerledikçe giderek zevkime daha uzak hale geliyor.
    • iCloud altyapısının büyük kısmı Cassandra instance’ları üzerine kurulu. Bununla ilgili iyi bir makale vardı ama şu anda bulamıyorum.
    • 11:35 sürümünü en güncel olarak değerlendirdiyse, bazı sunucuların saatleri yanlış olabilir mi?
  • Yazar git kullanılmasını öneriyor ama git, iCloud Drive ile pek iyi geçinmiyor.
    Eskiden iCloud Drive’da yüzlerce git deposu tutuyordum; büyük bir commit yaptığımda, yüzlerce GB’lık iCloud Drive’ın tamamı Apple sunucularıyla yeniden senkronize olurdu ve bu bir gün sürerdi.
    Apple desteğinde konuyu epey üst seviyeye taşıyarak çözmeye çalıştım ama sonunda çözülmedi. Şimdi git depolarını iCloud Drive’ın dışında tutuyorum.
    Son büyük değişikliğin senkronizasyonu bitmeden yüzlerce dosyayı hızla aynı anda değiştirince bu durum tetikleniyor gibi görünüyor.

    • git gibi sürüm kontrol sistemleri ile iCloud, OneDrive, Google Drive gibi bulut sürücülerinin bulut tabanlı sürüm yönetimini karıştırmamak gerektiğinin neredeyse genel kabul olduğunu sanıyordum.
      İkisi iyi uyuşmuyor; özellikle birden fazla cihaz aynı bulut sürücüsüyle senkronize ediliyorsa, her türlü garip ve beklenmedik davranışın ortaya çıkmasına zemin hazırlıyor.
    • Asıl yazının yazarıyım. Paylaştığın için teşekkürler.
      Sorun şu ki kullanmak zorunda olduğum bir uygulama başka bir senkronizasyon yöntemi desteklemiyor; bu yüzden bazı önemli dosyalar için iCloud Drive kullanmak zorundayım.
      git olmasaydı hangi dosyaların değiştiğini bile anlayamazdım. git olsa bile her şeyi yakaladığından emin olamıyorum. iCloud senkronizasyon çakışmaları yüzünden git içeriği de değişebilir gibi geliyor.
    • git zaten baştan beri büyük ikili nesnelerle de pek iyi geçinmez.
    • Önemli iCloud Drive klasörlerini otomatik bir süreçle bir yere rsync edip, o tarafta Git veya Dropbox vb. ile otomatik sürüm yönetimi yapmak yöntemini genelde kullanıyorum.
      Çok büyük veriler için iyi olmayabilir ama iCloud Drive’da olup agresif biçimde sürüm yönetimi yapmak istediğim şeylerin çoğu metin ya da küçük dosyalar olduğundan iki kopya tutmanın yükü neredeyse yok.
    • Bu arada Dropbox’ta da benzer nedenlerle git oldukça tuhaf şekillerde başarısız olabiliyor. Eskiden Dropbox’ı git sunucusu gibi kullanmak için git-remote-dropbox kullanmıştım.
      [1] https://github.com/anishathalye/git-remote-dropbox
  • iCloud Drive kullanmamak için daha büyük bir neden, uçtan uca şifrelemenin varsayılan olmaması.
    Orada sakladığınız her şey Apple sistem yöneticileri, destek görevlileri ve Apple’dan talepte bulunabilecek kişiler — örneğin şu anda arama izni olmadan bile bunu yapabilen ABD hükümeti — tarafından okunabilir.
    Uçtan uca şifreli olmayan servisleri kullanmamak daha iyi.
    Şu anda iCloud’da isteğe bağlı uçtan uca şifreleme var ama varsayılan olarak kapalı ve ayarların derinlerine gömülü olduğu için neredeyse kimse kullanmıyor.
    Ben tüm cihazlarımda dosyaları tutmak için Syncthing kullanıyorum. Uçtan uca şifreli, özgür yazılım ve çakışma yönetimi ile sürüm yedekleri de makul.
    Düz metni asla göremeyen, güvenilmeyen yalnızca senkronizasyon amaçlı cihazları da destekliyor; böylece bir VPS’te veya harici bir konumda güvenli şekilde düğüm bulundurabilirsiniz.

    • “Uçtan uca şifreli olmayan servisleri kullanmayın” deyip sonra “iCloud’da da isteğe bağlı uçtan uca şifreleme var” demek birbiriyle çelişiyor. iCloud da uçtan uca şifreleme sunuyor.
      Bir arkadaşınızı veya aile üyesini menüde iki kez dokunup bunu açmaya ikna etmek kolaydır; ama birden fazla cihaza Syncthing kurup yapılandırmaya ikna etmek kolay değildir.
      Syncthing’i savunmak sorun değil, ama ortalama kullanıcının anahtarı kaybederse tüm verilerini kaybedebileceği bir ayarı varsayılan olarak açmadığı için iCloud Drive’a kötü demek biraz komik.
      Büyükannenin varsayılan olarak daha güvenli bir şeydansa, parolasını unuttuğunda Apple’ı arayıp küçük Johnny’nin fotoğraflarını geri almayı çok daha fazla isteyeceğine bahse girerim.
    • Uçtan uca şifrelemeye dair gerçekçi bir karşı argüman da var. İnsanların büyük çoğunluğunun verilerinin yöneticilere veya hükümete sızmasından ziyade, şifreleme anahtarını unutma ya da kaybetme yüzünden tüm verilerini kaybetme olasılığı çok daha yüksek.
      Ben de uçtan uca şifrelemeyi açmak istiyorum ama anahtarı kaybetmeyeceğim konusunda kendime yeterince güvenmiyorum.
    • iCloud’da uçtan uca şifrelemeyi elle açmak ile uçtan uca şifrelemeyi varsayılan destekleyen bir sağlayıcıyı bizzat bulup kullanmak arasında ne fark var, bilmiyorum.
      Mesajlaşmada olduğu gibi karşı tarafın da uçtan uca şifrelemeyi açması gereken bir durum da değil.
    • Bir bulut depolama sağlayıcısını tamamen değiştirmektense, iCloud’da tek bir düğmeye basıp uçtan uca şifrelemeyi açmak elbette daha kolay görünüyor.
    • iCloud hesap ayarlarındaki Gelişmiş Veri Koruma ile uçtan uca şifrelemeyi açabilirsiniz.
      https://support.apple.com/en-ca/HT212520
  • Ben de bu yüzden epey sinirlendim. Calibre kitaplığımı Documents klasörüne koymuştum. Başka nereye koyacaktım ki, üstelik ücretsiz yedekleme de dahil diye düşündüm.
    Ama bir süre önce kitaplığın içindeki bazı kitap klasörlerinin, içinde asıl epub dosyası olması gerekirken boş olduğunu fark ettim.
    Dizin yapısı ve veritabanı kayıtları vardı ama sadece kitap dosyaları kaybolmuştu. Hepsi değil, rastgele şekilde yaklaşık %40’ı.
    Sonuç: sevdiğiniz şeyleri iCloud Drive’da saklamayın; özellikle de kitapları kesinlikle saklamayın.

    • Şaka yollu bir tavsiye ama muhtemelen Libgen’den yeniden bulabilirsiniz.
  • “Çakışma yönetimini destekleyen bir düzenleyicide dosyayı açarsanız hangi sürümün tutulacağını soran bir açılır pencere çıkar. Textifier, Xcode, Obsidian gibi çakışma yönetimi olmayan düzenleyiciler ise diskte ve yedekte hangi sürümün saklanacağına iCloud’un karar vermesine izin verir” kısmı için, iCloud desteği eklerken çakışma yönetimi mekanizması eklemeyen uygulama geliştiricilerinin de bir miktar sorumluluğu olduğunu düşünüyorum.
    Ama Apple’ın kendi uygulaması Xcode neden çakışma yönetimini desteklemiyor? Apple yazılımı, üçüncü taraf geliştiriciler için standardı belirlemeli.
    Apple bile sürüm çakışmalarını ele almıyorsa, elbette diğer geliştiriciler de ele almaz.

    • Orijinal yazının yazarıyım. Sanırım biraz yanlış anlaşılmaya yol açacak şekilde yazmışım. Asıl nokta bunun düzenleyiciden bağımsız olması.
      Çakışma yönetimini destekleyen bir düzenleyici kullansanız bile içerik kaybedebilirsiniz.
      Bir şey yazıp kaydettikten sonra düzenleyiciyi kapatıp bir daha açmadığınızı varsayarsak, iCloud o dosyanın içeriğini değiştirebilir ve kullanıcının bunu bilmesinin bir yolu yoktur.
      Veri kaybetmemenin tek yolu bir Git deposu oluşturmak ya da önemli tüm dosyaları çakışma yönetimini destekleyen bir düzenleyicide düzenli olarak açmaktır.
    • Bir uygulama bir özelliği uygulamadı diye sistem API’sinin önemli verileri sessizce silmemesi gerekir.
      Bu bir Xcode hatası değil, iCloud hatası.
  • iCloud Drive’a dosya koyarsanız iPhone yerel kopyayı istediği zaman kaldırabilir.
    Dosyayı senkronize ederken yerel kopyanın %100 mevcut olduğundan emin olmak istiyorsanız aynı dosyayı hem iCloud Drive’da hem de “iPhone’umda” klasöründe tutmanız gerekir.
    Apple Books, Numbers ve iCloud Drive kullanan tüm uygulamaların yerel kopyaları sürekli kaldırmasının nedeni bu.
    iCloud Drive kullanan basit bir not uygulaması yaptım; uygulamayı kapatınca iCloud 2 KB’lık txt dosyasını bile açgözlüce kaldırıyordu. Bazen de silmiyor, yani oldukça rastgele.
    Depolama alanınızın bol olması fark etmiyor; iCloud sürekli kullanılan dosyaların yerel sürümünü de kaldırabiliyor.
    Apple geliştirici desteği yapabilecekleri bir şey olmadığını söyledi. Geliştiricilerin de bir dosyayı asla kaldırma diye işaretlemesinin bir yolu yok.
    Resmî belgelerde Apple, kullanıcıların tüm dosyalarını gerçekten iCloud Drive’da tutmasını ve “iPhone’umda” içinde kopya bulundurmamasını öneriyor.

  • Contacts’ın kaybolduğu benzer bir sorun yaşadım. Bir süre boyunca oluyordu ama başta kendi hatam sandım.
    Bir sabah, önceki gece mesajlaştığım bir arkadaşımın kişi kaydının kaybolduğunu görünce sorunun iCloud olduğunu anladım.
    Apple destekle iletişime geçtim; temel yönergelerin hepsini denedikten sonra görevli bunun bilinen bir sorun olduğunu ama kök nedeni bulamadıklarını ve çözüm olmadığını kabul etti.
    Silmenin ne zaman gerçekleştiğini anlayabilmeleri için kişileri izlememi söylediler; üstelik birkaç dakikalık bir aralık vermem gerektiğini söylediler.
    Gerekçe olarak “iPhone çok fazla günlük oluşturduğu için tam olarak ne zaman olduğunu belirleyemezseniz mühendisler bakamaz” dediler.
    Hatanın aralığını 8 saate indirmiş olmamın gayet yeterli olduğunu düşündüm ama görevli, mühendislerin böyle söylediğini belirterek birkaç dakika düzeyinde doğruluk istedi.
    Sonunda Apple desteğe zor bir sorun emanet ettiğim her seferinde olduğu gibi görevli tekrar iletişime geçeceğini söyledi ama bir daha aramadı ve hiçbir şey olmadı.
    Kişilerimi Google’a taşıdım ve konuyu unuttum.

  • Bu sorunu inceledim. Apple, kullanıcıları çakışmalarla fazla uğraştırmamak için belirli koşullarda kullanıcı verilerini kaybettiren bir eşitleme stratejisi seçmiş
    Çakışan revizyonları koruyabilen çok daha eski teknikleri kullanmamaya karar vermiş
    Özet burada
    https://www.youtube.com/watch?v=q8k1q6kf1W0

    • Kullanıcıyı rahatsız etmemek isteseydi, yinelenen dosyaları çakışma klasörü gibi bir yere koyabilirdi
      Böylece insanlar “Apple dosyalarıma ne yaptı?” diye arayıp kurtarma yöntemini bulabilirdi
      Rahatsız etmeme demişken, iOS bir güncellemede arama ayarlarımı sessizce değiştirip bazı arayanlar için telefonumun çalmamasına neden olmuştu
      Zihni sakinleştirmeye yönelik saçma sapan bir özellik gibiydi; ama NHS'nin yapısı gereği geri araması zor olan kanser cerrahının aramasını kaçırınca epey kaygılandım
  • Benim durumumda iCloud Drive bazen öylece eşitlenmiyor ve bir şeye takılı kalıyor. Finder'daki iCloud Drive simgesinden eşitleme durumunu görebilirsiniz
    macOS ve iOS'taki tüm uygulamaları kapatıp killall bird çalıştırmak bazen çözüm oluyor. bird, iCloud eşitleme servisidir