Trả lời ngắn: Đang chuẩn bị sao lưu là lúc Time Machine tìm xem những gì đã thay đổi kể từ lần trước. Thường nó đọc được điều đó từ nhật ký thay đổi mà hệ thống lưu giữ. Khi nhật ký đó không dùng được, nó duyệt từng tệp trên ổ, và đó là khác biệt giữa bốn mươi giây và bốn giờ.
Lệnh trong phần tiếp theo cho bạn biết trường hợp nào đang xảy ra, để bạn không phải đoán nữa.
Trước khi sao chép một byte nào, Time Machine phải quyết định sao chép gì. macOS giữ một nhật ký liên tục về các thay đổi của hệ thống tệp gọi là FSEvents, và trong trường hợp tốt, Time Machine hỏi nhật ký đó mọi thứ đã thay đổi kể từ lần sao lưu trước, việc này chỉ mất vài giây kể cả trên ổ đầy.
Trong trường hợp xấu, nhật ký đó không trả lời được. Khi đó Time Machine quay về quét sâu, nghĩa là so sánh từng tệp ở nguồn với bản sao lưu trước, lần lượt từng tệp. Trên máy Mac có một triệu tệp, phần lớn rất nhỏ, đó là hàng giờ làm việc trước khi có gì được sao chép. Thanh tiến trình không cho bạn biết điều gì trong số này. Nó ghi "Đang chuẩn bị sao lưu" cho cả hai.
Hai lệnh. Không lệnh nào thay đổi gì.
tmutil status
Tìm Percent và BytesCopied. Trong giai đoạn chuẩn bị thực sự, cả hai đều bằng không, đó là bình thường. Thứ bạn cần là nhật ký, nó nói rõ đã đi theo cách nào:
log show --predicate 'subsystem == "com.apple.TimeMachine"' --last 1h --info | grep -i -E "deep|event|scan|prepar"
Một dòng nhắc tới Deep event scan hoặc event database is not usable là câu trả lời. Nó đang quét mọi thứ. Một dòng về việc đọc sự kiện và một số ít đường dẫn nghĩa là nhật ký thay đổi hoạt động và có thứ khác đang chậm.
Để xem trực tiếp, và dừng bằng Control-C:
log stream --predicate 'subsystem == "com.apple.TimeMachine"' --info
Khi không có bản sao lưu trước để so sánh, toàn bộ ổ được đọc. Vài giờ là bình thường với ổ đầy qua USB, và lâu hơn nhiều qua wifi. Một bản cập nhật macOS cũng làm mất hiệu lực nhật ký thay đổi, nên bản sao lưu đầu tiên sau đó theo định nghĩa là quét sâu. Hãy cắm ổ, để qua đêm, và kiểm tra vào buổi sáng trước khi làm gì khác.
Đây là trường hợp phổ biến trên máy Mac đã chạy một thời gian. Tắt máy không đúng cách, ổ đầy, hoặc ổ được sửa đều có thể khiến FSEvents không dùng được, và sau đó mọi bản sao lưu đều là quét sâu cho đến khi có thứ dựng lại nó. Bản sao lưu vẫn hoạt động. Chỉ là mỗi lần tốn hàng giờ.
Khởi động lại sẽ dựng lại nhật ký cho ổ khởi động trong nhiều trường hợp, và đó là việc rẻ nhất để thử.
Một bản sao lưu bị gián đoạn để lại thư mục có đuôi .inProgress trên đích. Time Machine cố đối chiếu nó trước khi bắt đầu bất cứ điều gì mới, và trên đích qua mạng việc đối chiếu có thể lâu hơn cả bản sao lưu. Hãy xem trên ổ sao lưu, trong Backups.backupdb trên ổ HFS+ hoặc trong thư mục riêng của ổ trên ổ APFS.
Xóa thư mục .inProgress chỉ bỏ đi một bản sao lưu chưa hoàn tất và không gì khác. Mỗi bản sao lưu đã hoàn tất là một thư mục riêng và không bị động đến. Chuyển nó vào Thùng rác từ Finder, dọn sạch Thùng rác, và bắt đầu sao lưu thủ công.
Quét sâu bị giới hạn bởi số lượng tệp, không phải dung lượng. Một tệp video 40 GB là một phép so sánh. Một thư mục node_modules 40 GB có thể là hai triệu. DerivedData của Xcode, bộ nhớ đệm npm và yarn, ảnh Docker, cellar của Homebrew và thư viện Steam là những nghi phạm thường gặp, và tất cả đều có thể tạo lại.
Loại trừ chúng trong Cài đặt hệ thống, Cài đặt chung, Time Machine, Tùy chọn. Làm vậy rút ngắn cả lần quét lẫn lần sao chép, và không làm bạn mất thứ gì bạn sẽ muốn lấy lại.
Time Machine ghi một ảnh đĩa vào NAS hoặc một máy Mac dùng chung, và mỗi lần so sánh tệp đều phải đi qua mạng. Với Wi-Fi, ở cuối nhà, một lần quét sâu có thể mất cả ngày. Hãy đặt máy Mac cạnh bộ định tuyến hoặc dùng cáp Ethernet, rồi xem cùng bản sao lưu đó có xong trong một giờ không.
Nếu nó không bao giờ xong, vấn đề nhiều khả năng nằm ở chính thư mục chia sẻ, và xác minh là cách để biết những gì đã có ở đó có đọc được không.
.inProgress xuất hiện. Có thể dừng Time Machine an toàn từ mục trên thanh menu hoặc bằng tmutil stopbackup.Đang chuẩn bị sao lưu là một trạng thái, và là cùng một trạng thái dù tác vụ sẽ xong trong một phút hay không bao giờ. Con số bạn thực sự cần là bản sao lưu thành công gần nhất kết thúc khi nào, và Time Machine giấu nó sau một menu bạn phải mở.
Copy Shelter hiện tuổi của bản sao lưu hoàn tất gần nhất trên màn hình chính, và lên tiếng sau bảy ngày không có bản nào. Nó cũng cho biết đang ở giai đoạn nào và đang xử lý tệp nào khi chạy, nên một tác vụ dài trông như tác vụ dài và một tác vụ bị kẹt trông như bị kẹt.
Và khi một bản sao lưu hoàn tất, hoàn tất chỉ là một khẳng định về bản sao chưa ai kiểm tra. Copy Shelter đọc lại nó để đối chiếu với các mã băm đã lưu, theo lịch, nên một bản sao lưu đã âm thầm không còn đọc được là điều bạn phát hiện vào một ngày thứ Ba bình thường.
Vài giây đến vài phút khi nhật ký thay đổi hoạt động, dù ổ lớn bao nhiêu. Hàng giờ khi nó đã quay về quét sâu. Lệnh xem nhật ký ở trên cho bạn biết là trường hợp nào, và đó là cách đáng tin cậy duy nhất để biết.
Có. Chưa có gì được ghi trong giai đoạn đó. Dừng nó từ mục Time Machine trên thanh menu, hoặc chạy tmutil stopbackup. Buộc thoát hoặc rút ổ trong giai đoạn sao chép mới là rủi ro, và đó là thứ để lại thư mục .inProgress.
Chỉ khi bạn loại trừ thứ không thể thay thế. Bộ nhớ đệm, thư mục build, thư mục của trình quản lý gói và thư viện trò chơi đã tải về đều có thể dựng lại từ internet. Cần sao lưu gì trên máy Mac đi qua danh sách này.
Khi đó nó đang quét nguồn, chưa ghi gì. Ổ đĩa chỉ hoạt động trong giai đoạn sao chép. Nếu một giờ nhật ký không có gì từ hệ thống con TimeMachine, chính tiến trình có thể đã bị treo, và bước tiếp theo là khởi động lại.
Nó có cùng việc phải làm và cùng hai cách để làm, nên lần chạy đầu đọc mọi thứ. Khác biệt là nó cho biết đang ở giai đoạn nào và đang xử lý gì, và điểm số trên màn hình chính tính bản sao lưu cuối cùng đã hoàn tất, không bao giờ tính bản vừa bắt đầu.
Liên quan: Time Machine báo không đủ dung lượng, khi bản sao lưu ngừng chạy mà không báo gì, và so sánh Copy Shelter và Time Machine.