기본 콘텐츠로 건너뛰기

macOS Cloud Backup with KopiaUI: OneDrive, Google Drive & NAS (Step-by-Step)

How to Set Up Cloud Backup on macOS with KopiaUI
OneDrive · Google Drive · NAS Integration Guide

A step-by-step guide to building a cloud backup on macOS with KopiaUI, using OneDrive, Google Drive, or a NAS as the repository. It covers everything from installing KopiaUI to creating a repository, excluding files, scheduling automatic backups with a snapshot retention policy, and finally running a restore test — giving you a safe macOS backup with point-in-time snapshots, encryption, and deduplication.

OSmacOS 12 or later
Backup toolKopiaUI v0.23.1
RepositoryOneDrive · Google Drive · NAS
Install methodHomebrew

The backup you copy to an external drive "every now and then" falls apart the moment you lose a file and find yourself asking, "When did I last copy this?" Accidentally overwritten files, ransomware, and disk failures arrive without warning — and a plain copy or sync only protects the single current state.

Kopia solves this with point-in-time snapshots. You can roll back to an hour ago, yesterday, or any point last week, and because everything is encrypted locally with AES-256-GCM before upload, not even the cloud provider can read it. Thanks to block-level deduplication, backing up every hour barely increases your storage usage. On top of that, it reuses the OneDrive, Google Drive, or NAS you already have as the repository — so there's no extra cost.

This guide walks through how to use KopiaUI as a backup tool on macOS, from connecting OneDrive, Google Drive, or NAS cloud storage to scheduling automatic backups, setting a retention policy, and running a restore test — all configured the way you'd actually run it.

Choosing a backup tool — why KopiaUI? (vs. Kopia CLI & Restic)

Several tools can do the same job.

ToolCharacteristics
Kopia CLI Same engine as KopiaUI. Great for scripted automation in the terminal. Preferred in server environments.
Restic + Rclone Restic for snapshot backups, Rclone for cloud connectivity. A powerful combination, but the CLI setup is complex.
KopiaUI GUI based. Easy even for non-developers and general users who'd rather avoid the CLI. Open source and free.
💡
KopiaUI and the Kopia CLI share the same repository. You can set things up in the GUI and still automate with the CLI — mixing both works fine.

Why use Kopia instead of plain mirroring?

If you just use OneDrive or Google Drive, your files do sync to the cloud — that's true. But there are problems, listed below.

IssuePlain mirroringKopia backup
Versioning Keeps only the current state. Delete a file by mistake and it's gone from the cloud too. Keeps point-in-time snapshots. Restore to any past point.
Special characters in filenames Names like .hidden, file:name, a/b that OneDrive/Google Drive reject can't sync. Stores file contents as encrypted chunks, so there are no filename restrictions.
Dotfiles & config files Hidden files like .env, .ssh, .claude are limited or missed in sync. Can back up every file.
Symbolic links Links break or get ignored. Preserves link metadata (and can follow the target too, as an option).
Encryption The cloud provider can read your content. Encrypted locally with AES-256-GCM before upload. Even the provider can't read it.

1

Install KopiaUI (Homebrew · macOS)

brew install --cask kopiaui

If you don't have Homebrew, install it first from brew.sh. KopiaUI requires macOS 12 (Monterey) or later, and the install package bundles both the kopia CLI binary and the GUI. To download it directly, see the official installation docs.

Launch it from Launchpad or Spotlight (⌘ + SpaceKopiaUI).

💡
A macOS security warning may appear on first launch → System Settings → Privacy & Security → Allow.

Once it starts, the Select Storage Type screen appears.

KopiaUI first launch — Select Storage Type screen
KopiaUI first launch — the Select Storage Type screen

2

Connect cloud storage — OneDrive · Google Drive · NAS

KopiaUI has no dedicated cloud-integration menu. Instead, you install each cloud service's native macOS app, let it mount as a local folder, and then point KopiaUI to that local path.

Why this approach works well No need to install rclone, no OAuth admin approval required.
The cloud app handles syncing, so Kopia just behaves as if it's writing to a local disk.

2-1. OneDrive (Microsoft 365)

brew install --cask onedrive

Launch the app → sign in with your Microsoft 365 account → after the sync completes, check the mount path:

ls ~/Library/CloudStorage/
# OneDrive-YourCompany

mkdir ~/Library/CloudStorage/OneDrive-YourCompany/KopiaBackup

2-2. Google Drive

brew install --cask google-drive

Launch the app → sign in with your Google account, then set the sync option to "Stream files".

Google Drive Stream files sync setting
Google Drive preferences — choosing Stream files (saves local disk space)
💡
Stream files vs. Mirror files
Stream files keeps files in the cloud only and downloads them on access, so it uses almost no local disk space.
When Kopia takes a snapshot it automatically pulls the files it needs, so backup works even without mirroring.

After the sync completes, check the mount path:

ls ~/Library/CloudStorage/
# GoogleDrive-your@gmail.com

mkdir ~/Library/CloudStorage/GoogleDrive-your@gmail.com/My\ Drive/KopiaBackup
💡
For Google Drive you must create the folder under My Drive. You can't write directly under GoogleDrive-*/.

2-3. NAS (Synology, etc.)

If you have a personal NAS, you can connect it two ways.

Option A — Network mount (SMB)
Finder → ⌘K → enter smb://nas-ip/share → after mounting, point KopiaUI's Local Directory to /Volumes/ShareName/.

# Verify the mount
ls /Volumes/
# ShareName  ...

mkdir /Volumes/ShareName/KopiaBackup

Option B — SFTP (built into KopiaUI, recommended for Synology)
SFTP mounting on macOS is cumbersome because it needs extra tools (macFUSE, etc.). KopiaUI has a built-in SFTP backend, so it can connect directly without mounting.

On the Select Storage Type screen, choose "SFTP Server", then:

FieldExample
Hostname192.168.1.100 or the NAS domain
Port22
UsernameNAS account
Path/volume1/backup/KopiaBackup
Key authRegister an SSH key and no password is needed
💡
On Synology, enable SSH in DSM Control Panel → Terminal & SNMP first.
If you already use the Synology Drive app, it mounts at ~/Library/CloudStorage/SynologyDrive-xxx/, so the Local Directory approach works too.

Repository path summary

ServiceMethodPath / setting
OneDrive Local Directory ~/Library/CloudStorage/OneDrive-xxx/KopiaBackup
Google Drive Local Directory ~/Library/CloudStorage/GoogleDrive-xxx/My Drive/KopiaBackup
NAS (SMB) Local Directory /Volumes/ShareName/KopiaBackup
NAS / Synology SFTP Server Hostname + Port 22 + remote path

3

Create a KopiaUI repository

3-1. Choose "Local Directory or NAS"

On the Select Storage Type screen, click "Local Directory or NAS".

3-2. Enter the Directory Path

Enter the path of the backup folder you created earlier.

# OneDrive
/Users/your-username/Library/CloudStorage/OneDrive-YourCompany/KopiaBackup

# Google Drive
/Users/your-username/Library/CloudStorage/GoogleDrive-you@gmail.com/My Drive/KopiaBackup
KopiaUI backup repository path configuration screen
Enter the repository path, then click Next

3-3. Set the repository password

Kopia encrypts the repository with AES-256-GCM.

⚠️
Lose the password and the data is unrecoverable Be sure to store it separately somewhere safe, like 1Password or Bitwarden.
KopiaUI repository encryption password setup
Setting the repository encryption password

Click "Create Repository" → the repository is created.

KopiaUI repository created — My Repository screen
Repository created — the My Repository screen

4

Set up file exclusions (Ignore)

Exclude files/directories you don't need to back up, to save time and space.

Method 1: Policy UI (KopiaUI)

Snapshots → select a snapshot → Edit"Files" tab → enter patterns under Ignore Files.

.DS_Store
.Spotlight-V100
.Trashes
.fseventsd
Library/Caches
Library/CloudStorage
💡
The ~/ tilde doesn't work. Enter paths relative to the backup root.
The Effective column shows, in real time, the patterns that will actually apply.
KopiaUI backup ignore files policy screen
Ignore Files setup — checking Defined / Effective patterns
💡
Excluding Library/CloudStorage is especially important
It prevents duplicate backups of data already in the cloud, such as OneDrive or Synology Drive.

Method 2: .kopiaignore file

Create a .kopiaignore file in the directory being backed up and Kopia reads it automatically. It uses the same syntax as gitignore.

cat > ~/.kopiaignore << 'EOF'
.DS_Store
.Spotlight-V100
.Trashes
.fseventsd
Library/Caches/
Library/CloudStorage/
EOF

If you register .kopiaignore under Ignore Rule Files in the Policy UI, the .kopiaignore files in subdirectories are applied automatically too.

Symbolic links

By default Kopia backs up only the symbolic link itself (its metadata) and doesn't follow the target. Turning on the "Follow symlinks" option in the Policy → Files tab follows the target and backs up the actual contents.

💡
Be careful on macOS if ~/Desktop or ~/Documents are symlinked into iCloud Drive.

5

Run your first snapshot (backup)

Snapshots tab → "New Snapshot" → enter the local path to back up → click "Snapshot Now".

Once the backup starts, you can watch progress in real time on the Tasks tab.

KopiaUI snapshot backup in progress screen
Backup in progress — live view on the Tasks tab

When it finishes, check the result in the snapshot list.

KopiaUI backup complete snapshot result screen
Backup complete — 1.3 TB, 277,268 files

6

Set up scheduling & retention policy

Under Policies"Edit Policy", configure Scheduling and Retention together.

⏱️ Scheduling — snapshot frequency

Setting the Snapshot Interval to 1 hour or 2 hours is recommended.

💡
If you lose a file by mistake while coding, you can instantly restore to its state from at most 1–2 hours ago.
Because it's an incremental backup that stores only changed files, running it every hour barely uses any space.
If hourly feels like too much, 4 hours or Daily are good alternatives.
KopiaUI automatic backup scheduling screen
Scheduling tab — the Snapshot Frequency dropdown

🗄️ Retention — snapshot retention policy

The more often you back up, the more the cleanup rule for old snapshots matters. Configure it in Policies → Edit Policy → Retention.

Setting Recommended Description
Keep Latest 10 Always keep the 10 most recent snapshots — instantly undo a mistake you just made.
Keep Hourly 24 Keep hourly history for the past 24 hours.
Keep Daily 7 Keep daily history for the past week.
Keep Weekly 4 Keep weekly history up to a month back.
Keep Monthly 12 Keep monthly history up to a year back.
💡
In short
"Back up automatically every 2 hours, and let Kopia clean up old snapshots on its own, keeping a full year of history at a fine granularity."
KopiaUI snapshot retention policy screen
Retention tab — retention policy configured

7

Test a restore

🔑
A backup is only real once it restores. Always finish with a restore test.

7-1. Select a snapshot

Snapshots → click the snapshot point you want to restore.

7-2. Browse with the file browser

Click "Browse" → review the directory/file list.

KopiaUI snapshot restore file browser screen
Snapshot file browser — explore files at a given point in time

7-3. Run the restore

Click "Restore Files & Directories" → enter the Destination path → "Restore".

KopiaUI backup restore destination configuration screen
Restore destination and options

8

Practical operation tips

Automate with the CLI

KopiaUI and the kopia CLI share the same repository. Create the repository in the GUI, then script repetitive tasks with the CLI.

# Check repository connection status
kopia repository status

# Back up a specific path immediately
kopia snapshot create ~/Developer

# List snapshots / restore a specific one
kopia snapshot list
kopia restore k1a2b3c4... ~/restore-test

# Clean up old snapshots per the retention policy + reclaim unused blocks
kopia snapshot expire --all --delete
kopia maintenance run --full
💡
Schedule kopia snapshot create with cron or launchd and backups run in the background without KopiaUI open. Just use only one scheduler so it doesn't overlap with the GUI's.

Storage & performance

  • Deduplication + compression: On top of block-level deduplication, zstd compression is applied by default, so the actual upload size is often smaller than the original.
  • Only the first backup is heavy: The initial snapshot uploads everything, but after that it's incremental — only changed blocks are sent — so hourly runs are light.
  • Confirm the cloud sync finished: After Kopia writes to the local mount folder, the OneDrive/Google Drive app must finish the actual upload for the backup to exist "remotely." Right after a large backup, check the cloud app's sync status too.

Operate safely

  • The password is the data: Lose the repository password and the entire backup is permanently unrecoverable. Always keep it separately in 1Password, Bitwarden, etc.
  • The 3-2-1 rule: 3 copies, on 2 different media types, with 1 off-site. Don't rely on a single cloud — add one more repository on a NAS or external disk.
  • Test restores regularly: Run a real restore at least once a quarter to guarantee it's a "backup that restores."

Wrap-up

If you've followed along, you now have an encrypted snapshot backup that runs automatically every 2 hours. To recap:

  • Install KopiaUI → mount cloud/NAS as a local path → create an encrypted repository
  • Exclude unnecessary files with Ignore to save time and space
  • Use scheduling + retention to automatically manage a full year of point-in-time history
  • Confirm it's a "backup that actually works" with a restore test

It comes down to one line: a backup is finished not when you set it up, but when a restore succeeds. Once you're set up, run a restore test today.

🔗
Reference links
· Kopia official docs: kopia.io/docs
· Getting started: kopia.io/docs/getting-started
· GitHub releases: github.com/kopia/kopia/releases

At a glance

  • Deduplication + compression: Block-level dedup and zstd compression use cloud storage efficiently.
  • Retention policy: Set how many latest/hourly/daily/weekly/monthly snapshots to keep in Policies → Edit Policy → Retention.
  • Mix GUI & CLI: Use kopia snapshot list, kopia restore, and more against the same repository.
  • Back up the password: Without the password, the data simply can't be recovered.
  • Restore is the real backup: Run restore tests regularly to ensure reliability.

댓글

이 블로그의 인기 게시물

스노우쿨링 장소로 유명한 마우이 카팔루아 비치 (Kapalua Beach)

마우이 북쪽에 카팔루아 비치라고 유명한 스노우 쿨링 장소가 있습니다. 주차장은 카팔루아 비치를 따라 트레일 코스가 있는데 비치 이용자 및 트레일러를 위한 무료 주차장이 있습니다.  아침 9시 이전에 가면 주차장이 널널 합니다. 주차장은 점심 시간대쯤 되니 만차가 되네요. 주차장을 통해 화장실쪽으로 걸어들어오면 해변을 만날 수 있습니다. 화장실 앞에 짠물을 헹궈내는 샤워기가 있고 해변 앞에도 있습니다. 해변쪽 보다 화장실 앞에 있는게 수압이 더 쎄더군요 숙소가 이 근처라서 아침일찍 산책길에 들렸더니 너무 이른 아침이라서 그런지 사람이 별로 없네요. 시간이 지나면 사람들이 갑자기 많아집니다. 파도가 약간 있습니다. 저 파도치는데는 물고기가 없습니다. 깊숙히 들어가야 합니다. 아침 밥을 먹고 아이들을 데리고 이곳에 다시 왔습니다. 숙소에서 비치타월을 들고 10여분 정도 걸어 왔습니다. 물고기가 별로 없어서 아 여기가 왜 마우이 최고의 스노우 쿨링 장소 일까 하고 후회 하고 있는데 저 돌 가까이 가봅니다. 우와 물고기가 돌사이에 제법 많네요 그러나 약간 파도가 있어서 돌에 너무 가까이 가면 부딪힐 위험이 있습니다. 스노우 쿨링 좋은 장비를 마련하지 못해서 특히 구명쪼기가 없어서 깊숙히 못 들어가봤는데 저는 약간의 수영실력으로 구명조끼 없이 물안경 하나로 깊숙히 헤염쳐서 사람들이 몰려있는 바다 깊숙히 들어가 봅니다. 물고기가 제법 많습니다. 특히 뼈만 있는 투명한 물고기는 인상적이네요. 아이들을 데리고 그나마 발이 조금 닿는 돌 옆 가까이 가서 겨우 물고기를 보여줍니다. 구명 조끼도 없이 아이들 발이 닿지 않아 불안 불안 하면서 옆에서 계속 아이가 관찰 할 수 있도록 보호 해줍니다. 구명조끼등 스노우 쿨링 장비가 있었으면 훨씬 좋았을텐데 조금 아쉬웠습니다. 해변을 따라 트레일 코스에 대한 안내입니다. 이곳엔 고급 리조트들도 많으니 구경 삼아 트레일 하는것도 좋을 것 같습...

샌프란시스코 길로이 아울렛 Gilroy Outlet

샌프란시스코 여행때 길로이 아울렛을 한국 분들은 참 많이 들리시죠. 미국 브랜드 옷을 싸게 살수 있는것 같습니다. 그러고 보면 이런 현상이 벌어지는 이유가 한국 백화점에서 미국 브랜드 옷을 2배나 가까이 비싸게 팔고 있다는 점입니다. 심한경우 3배나 비싸죠... 반성 해야 합니다. 길로이 아울렛은 샌프란시스코에서 101번 고속도로를 타고 한참 내려가야 합니다. 2시간쯤 내려가야 할껍니다. 고속도로 근처에 있어서 찾기는 쉬울꺼예요. 샌프란시스코는 약간 가을날씨 같은데 길로이까지 내려오면 낮에 오면 햇볕이 뜨거워 완전 여름입니다. 길로이 아울렛은 아래 제가 블로그에 썼듯이 하와이 와이켈레 아울렛과 같은 운영회사 인가 봅니다. http://comhack.blogspot.kr/2018/02/blog-post_18.html http://www.premiumoutlets.com  여기서 회원을 가입하고 쿠폰북을 출력하시거나 회원을 증빙하는 바우처 같은거 출력해가서 Information Center 로 가셔서 쿠폰북을 교환하는 것이 할인율이 좋죠 하와이 와이켈레와 마찬가지로 가성비는 코치가 좋습니다. 그리고 크록스도 좋습니다. 제가 갔을땐 Buy one, get one free 행사를 했습니다. (예전 블로그에서도 썼듯이 1+1 은 콩글리쉬 입니다. 1+1 = 2 입니다. ㅠㅠ) 크록스에서 아이들 슬리퍼 한켤레 샀는데 하나 더 가져오라고 합니다. 그런데 두개 신발중 비싼 신발 가격으로 계산이 되니 아울렛에서 Buy one, get one free 행사에서 가장 좋은 팁은 비슷한 가격대 신발이나 옷을 골라오는게 좋습니다. (직원이 계산시 설명해줘요 친절하게~ 비슷한 가격으로 가지고 오시는게 좋다고 ^^) 크록스 사이즈는 미국 단위로 암호같아서 우리나라 센치 단위로는 잘 모를꺼예요 미리 알고 가면 좋아요  https://www.crocs.co.kr/size-charts/fit-guide.html 저는 미리 정보를 좀 알고가...

하와이 로컬 슈퍼마켓 푸드랜드 팜스 (Foodland Farms) 연구

빅아일랜드 코나 지역에서 힐튼 와이콜리아 빌리지 호텔에 묵었지만 호텔에 딸려있는 레스토랑은 줄도 길고 너무 비싸고 맛도 없다는것을 금방 알게 됩니다. 특히 팁 세금 까지 합하면 아이들과 도니 &토니스 피자에서 피자 한판 먹는데 7만원이 넘어요. 저는 비용 때문에 호텔에 있는 고급 레스토랑을 자주 가진 않았는데 몇군데 가본결과 가성비는 별루 였던것 같습니다. 맛도 없는데 다른 블로그에서 왜 자랑질 하는지 모르겠어요 ㅠㅠ 뷰는 분위기 있고 좋았던것 같습니다. 코나지방이면 코나 공항 근처까지 가서 코스트코 피자가 10달라 선이니 코스트코 피자사오는게 이게 더 맛있고 양도 풍부합니다. (코스트코 피자 정도는 코스트코 회원 안들어도 살수 있어요. ) 연구도중 하와이 로컬 슈퍼마켓 Foodland Farms 를 알게 됩니다. 코나 힐튼에서 차로 15분거리입니다. 미국에서 슈퍼마켓이 15분 거리에 있다는것은 행운이죠... 빅 아일랜드는 뭐든 엄청 멀어요 Foodland Farms 가 좋은 점은 한국 입맛에 맞는 도시락을 팝니다. 가격도 괜찮습니다. 가끔 멀리 호텔을 나와서 점심 피크닉할때 도시락가져가면 피크닉테이블에서 맛있게 먹을수 있습니다. 팁도 필요 없어요 ^^ 미국은 회원제 슈퍼마켓이 많습니다. 대표적으로 코스트코죠 그런데 연회비를 받네요 코스트코 연회비는 한국이 제일 쌉니다. 푸드랜드도 회원제이긴한데 회원을 들지 않아도 구매 가능합니다. 회비도 없어요 자주 가실꺼면 회원을 들고 maikai card를 만드는게 할인율 측면에서 좋을것 같습니다. https://www.foodland.com/maikai-card 아래와 같이 생겼고 카운터나 사무실가서 만들어 달라고 하면 바로 만들어 줍니다. 바로 사용 가능합니다. 앱도 있어서 앱의 바코드를 제시하면 되는데 한국 앱스토에서는 다운로드가 안되네요. Maikai 카드를 만들면 기본적인 여러가지 품목에 회원 할인을 해주고 (아마도 푸드랜드 도시락이나 여기서 만드는 음식들은 ...