Biến Linux Server thành trạm Time Machine: Backup macOS không dây cực mượt

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Tại sao bạn nên tự build Time Machine Server?

Dữ liệu là thứ chúng ta chỉ thấy quý khi đã mất. Với người dùng Mac, Time Machine là cứu cánh tuyệt vời nhất. Tuy nhiên, mua Time Capsule chính hãng thì quá chát, còn dùng ổ cứng rời Type-C lại cực kỳ vướng víu. Nếu bạn đang thừa một con Linux server hoặc Raspberry Pi chạy 24/7, hãy biến nó thành trạm backup không dây ngay.

Thực tế, mình từng mất sạch code của một tuần làm việc chỉ vì lười cắm ổ cứng rời để backup. Từ khi dựng server riêng, cứ hễ máy Mac kết nối Wi-Fi nhà là nó tự âm thầm sao lưu. Bạn sẽ hoàn toàn rảnh tay và không bao giờ phải lo chuyện quên cắm dây nữa.

Chọn giao thức nào: SMB hay Netatalk (AFP)?

Để macOS nhận diện được ổ đĩa mạng, bạn thường có hai lựa chọn chính:

1. Samba (SMB)

Đây là giao thức hiện đại được Apple khuyến khích. Tuy nhiên, việc cấu hình Samba để macOS nhận diện đúng là ổ Time Machine đôi khi khá chập chờn trên các bản phân phối Linux cũ.

2. Netatalk (AFP)

Dù Apple đã coi AFP là giao thức cũ (legacy), nhưng Netatalk vẫn hoạt động cực kỳ ổn định cho mục đích backup. Nó hỗ trợ các thuộc tính mở rộng của macOS rất tốt, hiếm khi xảy ra lỗi ngắt kết nối giữa chừng.

So sánh nhanh:

  • Samba: Tốc độ tốt, hiện đại nhưng mDNS/Avahi đi kèm hơi khó cấu hình để hiện đúng icon backup.
  • Netatalk: Cài là chạy, sinh ra để dành cho Mac, độ tin cậy cực cao cho việc sao lưu lâu dài.

Trong bài viết này, mình chọn Netatalk kết hợp Avahi vì tiêu chí: Ổn định và dễ làm cho cả người mới.

Chuẩn bị hệ thống

Mình thực hiện trên Ubuntu/Debian. Nếu dùng CentOS hay Fedora, bạn chỉ cần thay đổi lệnh cài đặt, các file cấu hình vẫn tương tự.

Một lưu ý xương máu: Đừng bao giờ backup vào chung ổ đĩa hệ điều hành. Hãy dùng một ổ cứng hoặc phân vùng riêng. Mình từng quên giới hạn dung lượng, kết quả là Time Machine chiếm sạch 100% ổ cứng khiến server treo cứng, không thể SSH vào sửa lỗi.

Bước 1: Cài đặt các gói cần thiết

Cập nhật hệ thống và cài đặt netatalk cùng avahi-daemon để máy Mac có thể thấy server trong mạng nội bộ.

sudo apt update
sudo apt install netatalk avahi-daemon -y

Bước 2: Tạo thư mục lưu trữ và phân quyền

Giả sử ổ cứng ngoài của bạn được mount tại /mnt/backup_disk. Ta sẽ tạo thư mục riêng và một user chuyên dụng để backup.

sudo mkdir -p /mnt/backup_disk/timemachine
# Tạo user riêng để bảo mật, tránh dùng root
sudo adduser tmuser
# Cấp quyền sở hữu cho user tmuser
sudo chown -R tmuser:tmuser /mnt/backup_disk/timemachine
sudo chmod -R 700 /mnt/backup_disk/timemachine

Bước 3: Cấu hình Netatalk

Mở file /etc/netatalk/afp.conf để thiết lập thông số cho server.

sudo nano /etc/netatalk/afp.conf

Dán đoạn cấu hình sau vào cuối file, nhớ thay đổi đường dẫn thực tế của bạn:

[Global]
  hostname = My-Linux-Backup-Server
  log file = /var/log/netatalk.log
  log level = logger:info
  zeroconf = yes

[Time Machine]
  path = /mnt/backup_disk/timemachine
  valid users = tmuser
  time machine = yes
  ; Giới hạn dung lượng (ví dụ 500GB = 512000 MB)
  vol size limit = 512000

Tại sao các dòng này quan trọng?

  • time machine = yes: Ép macOS hiểu đây là ổ backup chuyên dụng.
  • vol size limit: Rất quan trọng. Time Machine có tính tham lam, nó sẽ ăn sạch ổ cứng nếu bạn không giới hạn dung lượng ngay từ đầu.

Bước 4: Cấu hình Avahi (Service Discovery)

Để Finder tự động hiện tên server mà không cần gõ IP thủ công, bạn hãy tạo file service cho Avahi.

sudo nano /etc/avahi/services/afpd.service

Nội dung file:

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">%h</name>
    <service>
        <type>_afpovertcp._tcp</type>
        <port>548</port>
    </service>
    <service>
        <type>_device-info._tcp</type>
        <port>0</port>
        <txt-record>model=TimeCapsule8,119</txt-record>
    </service>
</service-group>

Dòng model=TimeCapsule8,119 giúp server hiện icon ổ đĩa Time Capsule đặc trưng trong Finder nhìn rất chuyên nghiệp.

Bước 5: Kích hoạt dịch vụ

Chạy các lệnh sau để áp dụng cấu hình mới:

sudo systemctl restart netatalk avahi-daemon
sudo systemctl enable netatalk avahi-daemon

Kết nối từ macOS

Trên máy Mac, bạn thực hiện các bước sau:

  1. Vào System Settings -> General -> Time Machine.
  2. Nhấn Add Backup Disk.
  3. Chọn tên server bạn vừa đặt (ví dụ: My-Linux-Backup-Server).
  4. Đăng nhập bằng user tmuser và mật khẩu đã tạo ở Bước 2.

Lần backup đầu tiên thường rất nặng (có thể lên tới vài trăm GB). Mình khuyên bạn nên cắm dây LAN để đạt tốc độ cao nhất, các lần sau dùng Wi-Fi sẽ rất thoải mái.

Kinh nghiệm vận hành thực tế

Sau một thời gian sử dụng, mình rút ra vài điểm cần lưu ý:

  • Định dạng ổ cứng: Trên Linux, hãy ưu tiên dùng ext4. Tránh dùng NTFS hay exFAT vì Netatalk quản lý quyền (permission) trên các định dạng này rất tệ, dễ gây lỗi backup.
  • Kiểm tra dịch vụ: Nếu bỗng dưng không thấy ổ backup, hãy check lệnh systemctl status avahi-daemon. Đa số trường hợp lỗi do dịch vụ này bị treo.
  • Tốc độ: Nếu dùng Raspberry Pi, hãy ưu tiên dùng cổng USB 3.0 cho ổ cứng để tránh nghẽn cổ chai khi backup dữ liệu lớn.

Tự dựng Time Machine server không chỉ giúp bạn tiết kiệm vài triệu đồng mua phần cứng mà còn giúp quản lý dữ liệu chủ động hơn. Chúc bạn thực hiện thành công!

Share: