iCloud Drive âm thầm xóa nội dung của người dùng
(dominikmayer.com)- Do xung đột tệp ẩn trong iCloud Drive, các đoạn văn vừa viết hoặc phần thay đổi mã gần đây đã biến mất, gây mất dữ liệu trước khi bản sao lưu kịp được lưu
- Xung đột xảy ra trong tình huống hệ thống cho rằng trên Mac và iPhone có các phiên bản khác nhau của cùng một tệp, nhưng tệp gặp vấn đề chưa từng được mở trên iPhone
- Dropbox giữ riêng các tệp bị xung đột, nhưng iCloud Drive không hiển thị chúng trong hệ thống tệp, nên chỉ có thể thấy popup lựa chọn trong các trình soạn thảo hỗ trợ xử lý xung đột
- Trong các trình soạn thảo không có xử lý xung đột như Textifier, Xcode, Obsidian, iCloud sẽ chọn phiên bản để lưu; theo thời gian, phiên bản đúng có thể bị ghi đè trong bản sao lưu
- Với dữ liệu quan trọng, an toàn hơn là để ngoài iCloud Drive và theo dõi thay đổi của các tệp cốt lõi bằng kho Git; Cloud Cub dành cho các tệp buộc phải còn trên iCloud cũng đang được phát triển
Xung đột tệp ẩn trong iCloud Drive
- Khi đang viết tài liệu, đoạn văn vừa nhập bỗng biến mất; khi phát triển ứng dụng, Xcode hiển thị nhiều lỗi ở phần mã trước đó vẫn không có vấn đề
- Các thay đổi gần đây trong nhiều tệp đã bị xóa
- Mất mát xảy ra trước khi Time Machine hoặc Backblaze kịp lưu lại
- Nguyên nhân là xung đột tệp mà iCloud Drive phát hiện
- iCloud Drive cho rằng Mac và iPhone có các phiên bản khác nhau của cùng một tệp và không thể tự động hợp nhất
- Tuy nhiên, các tệp bị ảnh hưởng chưa từng được mở trên iPhone
- Vì thư mục Documents trên Mac đã được chuyển sang iCloud, các tệp đó nằm trong iCloud
- Khi xảy ra xung đột phiên bản, Dropbox lưu kèm một tệp xung đột được đặt tên kiểu “(John Doe’s conflicted copy)”
- iCloud Drive không hiển thị xung đột tương tự trong hệ thống tệp
- Nếu mở tệp bằng trình soạn thảo hỗ trợ xử lý xung đột, một popup sẽ xuất hiện để hỏi muốn giữ phiên bản nào
- Trong các trình soạn thảo không có xử lý xung đột như Textifier, Xcode, Obsidian, iCloud sẽ quyết định phiên bản nào được lưu trên ổ đĩa và trong bản sao lưu
Điều kiện khôi phục và cách ứng phó
- Nếu thời gian trôi qua và bản sao lưu mới ghi đè lên bản sao lưu cũ từng chứa phiên bản đúng, nội dung có thể mất vĩnh viễn
- Để khôi phục, cần mở tệp đó bằng trình soạn thảo hỗ trợ giải quyết xung đột
- Trình soạn thảo được dùng làm ví dụ là iA Writer
- Sau khi chuyển tệp ra khỏi iCloud Drive, cách này cũng không còn hữu ích
- Trong thử nghiệm, nếu chuyển lại tệp chưa chỉnh sửa vào iCloud, popup phiên bản xung đột lại xuất hiện; nhưng nếu tệp đã được chỉnh sửa hoặc tiếp tục làm việc trên bản sao, điều này có thể không xảy ra
- Cách ẩn xung đột phiên bản có thể trông thân thiện với người dùng, nhưng có thể khiến bạn không phát hiện mất dữ liệu cho đến tận vài năm sau khi mở lại tài liệu quan trọng
- Cho đến khi iCloud Drive hiển thị xung đột phiên bản trong hệ thống tệp hoặc tại một vị trí trung tâm dễ truy cập, an toàn hơn là chuyển dữ liệu quan trọng ra khỏi iCloud Drive
- Đang xây dựng Cloud Cub để phát hiện và giải quyết các xung đột đồng bộ ẩn cho những tệp buộc phải ở lại iCloud
1 bình luận
Các ý kiến trên Hacker News
Tôi từng gặp chuyện tương tự: trên iPhone của vợ tôi, đồng bộ đám mây trong Notes đang bật, tôi nghĩ là không cần nên tắt đi, thế là vợ tôi hỏi: “Tất cả ghi chú của em đâu rồi? Anh đã làm gì vậy?”
Tôi toát mồ hôi lạnh, nhưng nhớ ra có một chiếc iPad cũng có ứng dụng Notes đã đồng bộ, nên lập tức mở nó và tắt WiFi để “giữ lại” các ghi chú
Tôi gọi cho Apple, và nhân viên hỗ trợ đã tìm ra cách: sao chép rồi dán từng ghi chú sang một thư mục mới để chúng không bị xóa
Đó là vài giờ khá căng thẳng, và tôi nghĩ Apple đáng ra phải đưa ra nhiều cảnh báo hoặc popup hơn về toàn bộ tác động của thao tác như vậy
Ngoài ra, tôi cũng phát hiện hỗ trợ kỹ thuật của Apple về cơ bản có thể kết nối vào điện thoại kiểu “VNC” để xem và thay đổi cài đặt. Tôi nhớ là họ có yêu cầu quyền và tôi đã bấm “phê duyệt”, nhưng cho đến khi tận mắt thấy thì tôi cũng không biết có chức năng như vậy
Hơn nữa, họ vẫn giúp dù nguyên nhân có vẻ là lỗi của chính người dùng. Công ty tôi trả rất nhiều tiền cho các sản phẩm Google, nhưng Google gần như không có khả năng sẽ hỗ trợ qua điện thoại cho chuyện kiểu này
Trước đây tôi từng nói chuyện với nhân viên phụ trách những thứ như kiểm soát truy cập, nhưng nếu nhờ giúp khi ghi chú Keep biến mất, có lẽ tôi sẽ nhận được một câu trả lời lịch sự kiểu biến đi. Thực tế là ghi chú Keep đôi khi cũng biến mất
Có vẻ vấn đề của vợ anh nằm ở phía người quản lý thiết bị iOS hơn là Apple
Tôi đồng ý cả triệu lần. Nhưng đây không chỉ là vấn đề của iCloud, mà có vẻ là khuynh hướng căn bản trong toàn bộ phần mềm của Apple
Tôi cũng liên tục gặp chuyện này khi tô highlight PDF trong Books. Đôi khi mở lại PDF thì vài trang vừa đánh dấu gần đây đã biến mất
Trong lúc làm việc thì có vẻ nó vẫn lưu liên tục, nhưng vì lý do nào đó không rõ, nó lại coi phiên bản 11:35 là phiên bản chính mới nhất chứ không phải bản 11:45
Vấn đề Apple âm thầm ghi đè nội dung mới bằng phiên bản cũ đã kéo dài ít nhất 10 năm
Tôi không hiểu bằng cách nào một lỗi nghiêm trọng như vậy lại lọt vào hệ thống ngay từ đầu và đến giờ vẫn chưa được sửa
Nó miễn phí và dùng giấy phép BSD, nhưng cần nhớ rằng nếu muốn xem các thay đổi trong ứng dụng khác thì phải xuất ra PDF có kèm chú thích
Nếu bạn đã mệt mỏi với nền cam làm chết độ tương phản của Apple hoặc việc không có bút highlight màu vàng thật sự, thì đáng để thử. Tôi không liên quan gì, chỉ biết ơn vì nó tồn tại
https://skim-app.sourceforge.io/
Ở mảng phần cứng, tôi nhớ họ cũng từng khá tàn nhẫn khi cắt bỏ ổ đĩa mềm, ổ quang, và cả kiến trúc CPU tới ba lần
Với iCloud, có vẻ thái độ đó cũng được áp dụng cho cả tệp. Tôi không nói tất cả đều xấu, nhưng càng lớn tuổi thì nó càng rời xa gu của tôi
Tác giả đề xuất dùng git, nhưng git không hợp với iCloud Drive
Trước đây tôi từng đặt hàng trăm repository git trong iCloud Drive; khi có commit lớn, toàn bộ iCloud Drive hàng trăm GB lại đồng bộ lại với máy chủ Apple, và mất cả ngày
Tôi đã cố đẩy vụ này lên khá cao trong Apple Support để giải quyết nhưng cuối cùng vẫn không xong. Giờ tôi để các repository git bên ngoài iCloud Drive
Có vẻ hiện tượng này bị kích hoạt nếu nhanh chóng thay đổi đồng thời hàng trăm tệp trước khi lần đồng bộ thay đổi lớn trước đó hoàn tất
Hai thứ này không hợp nhau, và đặc biệt nếu nhiều thiết bị cùng đồng bộ với một cloud drive thì có thể sinh ra đủ loại hành vi kỳ lạ, không lường trước
Vấn đề là một ứng dụng tôi buộc phải dùng không hỗ trợ phương thức đồng bộ nào khác, nên một số tệp quan trọng phải dùng iCloud Drive
Nếu không có git thì tôi còn không thể biết tệp nào đã bị thay đổi. Ngay cả có git, tôi cũng không chắc đã bắt được hết. Tôi nghĩ xung đột đồng bộ iCloud cũng có thể làm thay đổi nội dung git
Cách này có lẽ không tốt cho dữ liệu rất lớn, nhưng những thứ nằm trong iCloud Drive mà tôi muốn quản lý phiên bản một cách mạnh tay thì phần lớn là văn bản hoặc nhỏ, nên việc giữ hai bản gần như không đáng kể
[1] https://github.com/anishathalye/git-remote-dropbox
Lý do lớn hơn để không dùng iCloud Drive là mã hóa đầu cuối không được bật mặc định
Mọi thứ bạn lưu ở đó đều có thể bị quản trị viên hệ thống Apple, nhân viên hỗ trợ, và những người có thể yêu cầu Apple cung cấp, chẳng hạn chính phủ Mỹ hiện thậm chí không cần lệnh khám xét, đọc được
Tốt nhất là không dùng các dịch vụ không có mã hóa đầu cuối
Hiện iCloud có mã hóa đầu cuối dạng tùy chọn, nhưng mặc định bị tắt và bị chôn sâu trong phần cài đặt nên hầu như không ai dùng
Tôi dùng Syncthing để giữ tệp trên mọi thiết bị. Nó có mã hóa đầu cuối, là phần mềm tự do, và xử lý xung đột cũng như sao lưu phiên bản khá hợp lý
Nó cũng hỗ trợ các thiết bị chỉ dùng để đồng bộ, không đáng tin cậy và không bao giờ thấy được bản rõ, nên bạn có thể đặt node trên VPS hoặc ở địa điểm bên ngoài một cách an toàn
Thuyết phục bạn bè hay gia đình bấm hai lần trong menu để bật thì dễ, nhưng thuyết phục họ cài và cấu hình Syncthing trên nhiều thiết bị thì không dễ
Bênh vực Syncthing thì tốt thôi, nhưng nói iCloud Drive tệ chỉ vì họ không bật mặc định một thiết lập mà người dùng trung bình có thể mất toàn bộ dữ liệu nếu làm mất khóa thì hơi buồn cười
Tôi dám chắc nếu là bà của bạn, bà sẽ muốn có thể gọi Apple để lấy lại ảnh bé Johnny khi quên mật khẩu hơn nhiều so với việc mặc định “an toàn hơn”
Tôi cũng muốn bật mã hóa đầu cuối, nhưng không đủ tin bản thân sẽ không làm mất khóa
Đây cũng không phải tình huống như nhắn tin, nơi bên kia cũng phải bật mã hóa đầu cuối
https://support.apple.com/en-ca/HT212520
Tôi cũng khá bực vì chuyện này. Tôi từng để thư viện Calibre trong thư mục Documents. Chứ còn để đâu nữa, lại còn kèm sao lưu miễn phí mà
Nhưng cách đây không lâu tôi phát hiện vài thư mục sách trong thư viện đáng lẽ phải chứa tệp epub thật thì lại trống
Cấu trúc thư mục và các mục trong cơ sở dữ liệu vẫn còn, nhưng chỉ tệp sách là biến mất. Không phải tất cả, mà ngẫu nhiên khoảng 40%
Kết luận là đừng lưu những thứ bạn yêu thích trên iCloud Drive, đặc biệt là sách thì càng không
Về đoạn “nếu mở tệp bằng trình biên tập hỗ trợ xử lý xung đột, một popup sẽ hỏi giữ phiên bản nào. Các trình biên tập không có xử lý xung đột như Textifier, Xcode, Obsidian thì để iCloud quyết định phiên bản nào sẽ được lưu trên đĩa và trong bản sao lưu”, tôi nghĩ các nhà phát triển ứng dụng khi thêm hỗ trợ iCloud mà không thêm cơ chế xử lý xung đột cũng có một phần trách nhiệm
Nhưng tại sao Xcode, ứng dụng của chính Apple, lại không hỗ trợ xử lý xung đột? Phần mềm Apple nên đặt ra chuẩn mực cho lập trình viên bên thứ ba
Nếu Apple cũng không xử lý xung đột phiên bản, thì dĩ nhiên các lập trình viên khác cũng sẽ không làm
Bạn vẫn có thể mất nội dung dù dùng trình biên tập hỗ trợ xử lý xung đột
Giả sử bạn viết gì đó, lưu lại, rồi đóng trình biên tập và không mở lại, iCloud có thể tráo nội dung tệp đó mà người dùng không có cách nào biết
Cách duy nhất để không mất dữ liệu là tạo một kho Git, hoặc thường xuyên mở mọi tệp quan trọng bằng trình biên tập có hỗ trợ xử lý xung đột
Đây không phải lỗi Xcode, mà là lỗi iCloud
Nếu bạn đặt tệp trong iCloud Drive, iPhone có thể xóa bản sao cục bộ bất cứ lúc nào
Nếu muốn vừa đồng bộ tệp vừa chắc chắn 100% rằng có bản sao cục bộ, bạn phải đặt cùng tệp đó ở cả iCloud Drive và thư mục “Trên iPhone của tôi”
Đây là lý do Apple Books, Numbers và mọi ứng dụng dùng iCloud Drive cứ liên tục xóa bản sao cục bộ
Tôi từng làm một ứng dụng ghi chú đơn giản dùng iCloud Drive, và khi đóng ứng dụng, iCloud tham lam xóa luôn cả tệp txt 2KB. Đôi khi nó lại không xóa, nên khá ngẫu nhiên
Dù còn rất nhiều dung lượng trống cũng không quan trọng, iCloud vẫn có thể xóa phiên bản cục bộ của các tệp bạn đang dùng liên tục
Hỗ trợ lập trình viên của Apple nói họ không thể làm gì. Lập trình viên cũng không có cách đánh dấu để tệp tuyệt đối không bị xóa
Trong tài liệu chính thức, Apple thực sự khuyên người dùng lưu mọi tệp trên iCloud Drive và không để bản sao trong “Trên iPhone của tôi”
Tôi từng gặp một vấn đề tương tự, Contacts biến mất. Chuyện xảy ra một thời gian, nhưng ban đầu tôi nghĩ là lỗi của mình
Một sáng nọ, khi thấy liên hệ của người bạn mà tôi vừa nhắn tin tối hôm trước đã biến mất, tôi nhận ra vấn đề là iCloud
Tôi liên hệ hỗ trợ Apple, và sau khi làm hết các bước hướng dẫn cơ bản, nhân viên phụ trách thừa nhận đây là vấn đề đã biết nhưng họ chưa tìm ra nguyên nhân gốc và cũng không có cách khắc phục
Họ bảo tôi theo dõi danh bạ để biết việc xóa xảy ra lúc nào, nhưng nói rằng tôi phải cung cấp khoảng thời gian ở mức vài phút
Lý do là “iPhone tạo rất nhiều log nên nếu không chỉ ra chính xác thời điểm xảy ra, kỹ sư không thể xem được”
Tôi nghĩ việc thu hẹp lỗi xuống khoảng 8 giờ đã là khá ổn, nhưng nhân viên nói các kỹ sư yêu cầu độ chính xác ở mức vài phút
Cuối cùng, như mọi lần tôi giao vấn đề khó cho hỗ trợ Apple, nhân viên nói sẽ liên hệ lại nhưng không bao giờ gọi lại, và chẳng có gì xảy ra
Tôi chuyển danh bạ sang Google rồi thôi quên chuyện đó
Tôi đã xem xét vấn đề này. Apple, để tránh làm phiền người dùng quá nhiều vì các xung đột, đã chọn một chiến lược đồng bộ hóa làm mất dữ liệu người dùng trong một số điều kiện nhất định
Tức là họ đã quyết định không dùng những kỹ thuật cũ hơn rất nhiều vốn có thể giữ lại các bản sửa đổi bị xung đột
Phần tổng kết ở đây
https://www.youtube.com/watch?v=q8k1q6kf1W0
Khi đó mọi người có thể tìm kiếm “Apple đã làm gì với tệp của tôi vậy?” và tìm cách khôi phục
Nhân nói về việc không làm phiền, trong một bản cập nhật nào đó iOS đã âm thầm thay đổi cài đặt cuộc gọi của tôi, khiến điện thoại không đổ chuông với một số người gọi
Đó là một kiểu tính năng vớ vẩn nhằm giúp tâm trí bình thản hơn, nhưng do đặc thù của NHS, tôi đã lỡ cuộc gọi từ bác sĩ phẫu thuật ung thư — người rất khó gọi lại — nên đã rất lo lắng
Trong trường hợp của tôi, iCloud Drive thỉnh thoảng đơn giản là không đồng bộ và bị kẹt ở đâu đó. Có thể xem trạng thái đồng bộ hóa từ biểu tượng iCloud Drive trong Finder
Đóng tất cả ứng dụng trên macOS và iOS rồi chạy
killall birdđôi khi sẽ giải quyết được.birdlà dịch vụ đồng bộ hóa iCloud