Ditto 클립보드 히스토리를 여러 PC에서 동기화하는 방법
윈도우 클립보드 앱의 클래식, Ditto를 더 잘 쓰는 방법을 소개합니다. Ditto 포터블이 아닌 설치 버전 기준으로 설명합니다.
이 글을 읽고 나면, 여러 PC에서 같은 클립보드를 공유하는 방법을 알 수 있습니다. 원드라이브 동기화와 작업 스케줄러 설정까지 한 번에 정리했습니다.
여러 PC 간 공유
이 팁은 각각의 컴퓨터가 동시에 사용되지 않는 것을 전제로 합니다. 여러 PC가 동시에 켜져 있는 상황이라면 Ditto의 친구 기능을 이용하세요. 옵션의 친구 탭에서 상대 PC의 IP나 컴퓨터 이름을 등록하고 그룹 암호를 맞추면, 같은 네트워크에서 복사한 내용이 실시간으로 다른 PC의 Ditto에 뜹니다.
클라우드 공유 방식은 윈도우 폴더와 클라우드 폴더의 동기화 기능을 이용합니다. 원드라이브, Dropbox, 구글 드라이브 모두 같은 원리이고, 여기서는 원드라이브를 기준으로 설명합니다. 다른 저장소를 쓴다면 아래 파워셸 스크립트를 수정해야 합니다.
순서는 이렇습니다. 먼저 Ditto 옵션의 일반 탭에서 데이터베이스 경로를 원드라이브 안 폴더로 지정합니다. 그다음 Ditto 옵션의 시스템 시작 시 Ditto 실행을 끄고, 작업 스케줄러로 Ditto 시작 전에 동기화 시간을 확보합니다.

로그온 3분 후 실행
가장 간단한 방법은 윈도우 로그온 후 3분 뒤에 Ditto를 실행하는 것입니다. 3분 동안 원드라이브 동기화가 따라잡을 시간을 주는 방식이고, 동기화할 데이터가 많으면 시간을 조절하면 됩니다.
파워셸에서 아래 명령어를 한 번에 붙여넣으면 작업 스케줄러에 등록됩니다.
$act = New-ScheduledTaskAction -Execute 'C:\Program Files\Ditto\Ditto.exe'
$trg = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$trg.Delay = 'PT3M'
$set = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit ([TimeSpan]::Zero)
Register-ScheduledTask -TaskName 'DittoDelayed3min' -Action $act -Trigger $trg -Settings $set -Force

컴퓨터가 부팅되고 사용자 로그온이 된 후에 3분 동안 기다렸다가 ditto 가 실행됩니다.

고급: 원드라이브 동기화 완료 후 실행
3분 대기는 대충 맞추는 방법입니다. 가능하다면 동기화가 끝날 때까지 기다렸다가 Ditto를 실행하는 게 더 정확합니다. 아래 스크립트는 윈도우 로그온 후에 원드라이브 동기화가 완료되길 기다린 후 Ditto를 실행합니다.
Ditto는 트레이 GUI 앱이고 OneDrive도 사용자 세션에서 실행되므로, 트리거는 시스템 부팅(AtStartup)이 아니라 사용자 로그온(AtLogOn)으로 등록해야 합니다. 부팅 시점에는 OneDrive가 아직 없어서 스크립트가 의미 없이 타임아웃으로 끝납니다. 자동 로그인 PC라면 사실상 부팅 직후와 같습니다.
1. 파워쉘 스크립트(ps1)
메모장 등 텍스트 에디터를 이용해 아래 내용으로 C:\bin\Start-DittoAfterOneDrive.ps1파일을 저장합니다. (C:\bin 폴더가 없으면 먼저 생성하세요.)
# OneDrive 동기화 완료 대기 후 Ditto 실행
$DittoExe = 'C:\Program Files\Ditto\Ditto.exe'
$TimeoutMin = 15 # 최대 대기 시간 (초과 시 그냥 Ditto 실행)
$IntervalSec = 5 # 확인 간격
$StableCount = 3 # 연속 N회 대기 0건이어야 완료로 판단
$LogFile = 'C:\bin\Start-DittoAfterOneDrive.log'
function Write-Log([string]$msg) {
"{0:yyyy-MM-dd HH:mm:ss}`t{1}" -f (Get-Date), $msg | Add-Content -Path $LogFile -Encoding UTF8
}
function Get-PendingCount {
param([string[]]$Roots)
$n = 0
foreach ($r in $Roots) {
$n += (Get-ChildItem -LiteralPath $r -Recurse -File -Force -ErrorAction SilentlyContinue |
Where-Object {
$_.Name -notlike '~$*' -and
$_.Extension -ne '.tmp' -and
$_.Name -ne 'desktop.ini' -and
$_.Name -notmatch '^\.[0-9A-Fa-f]{8}(-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$' -and
-not ([int]$_.Attributes -band 0x400) # reparse point 없음 = 미동기화
} | Measure-Object).Count
}
return $n
}
# 이미 Ditto가 실행 중이면 종료
if (Get-Process -Name Ditto -ErrorAction SilentlyContinue) {
Write-Log 'Ditto already running. Exit.'
exit
}
# 대상 OneDrive 경로 (개인/Business 모두 포함)
$roots = @($env:OneDrive, $env:OneDriveCommercial, $env:OneDriveConsumer) |
Where-Object { $_ -and (Test-Path -LiteralPath $_) } | Select-Object -Unique
$deadline = (Get-Date).AddMinutes($TimeoutMin)
# 1) OneDrive 프로세스 대기
while (-not (Get-Process -Name OneDrive -ErrorAction SilentlyContinue) -and (Get-Date) -lt $deadline) {
Start-Sleep -Seconds $IntervalSec
}
# 2) 동기화 완료 대기 (연속 N회 pending 0)
$ok = 0
while ($ok -lt $StableCount -and (Get-Date) -lt $deadline) {
$p = Get-PendingCount -Roots $roots
if ($p -eq 0) { $ok++ } else { $ok = 0; Write-Log "Pending: $p" }
Start-Sleep -Seconds $IntervalSec
}
if ($ok -ge $StableCount) { Write-Log 'Sync complete.' } else { Write-Log 'Timeout. Launching anyway.' }
# 3) Ditto 실행
Start-Process -FilePath $DittoExe
Write-Log 'Ditto started.'
2. 작업 스케줄러 등록 명령어
PowerShell에서 한 번에 붙여넣으면 됩니다.
$act = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File "C:\bin\Start-DittoAfterOneDrive.ps1"'
$trg = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$set = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit (New-TimeSpan -Hours 1)
Register-ScheduledTask -TaskName 'DittoAfterOneDrive' -Action $act -Trigger $trg -Settings $set -Force

시작 테스트와 삭제는 아래 명령어로 가능합니다.
Start-ScheduledTask -TaskName 'DittoAfterOneDrive'
Unregister-ScheduledTask -TaskName 'DittoAfterOneDrive' -Confirm:$false
참고
- Ditto 자체의 "Windows 시작 시 실행" 옵션과 시작프로그램 항목은 꺼야 합니다. 켜져 있으면 동기화 전에 Ditto가 먼저 뜹니다.
- 실행 결과는
C:\bin\Start-DittoAfterOneDrive.log에서 확인할 수 있습니다. - 동기화 폴더가 크면 재귀 탐색이 오래 걸립니다. Ditto.db가 있는 폴더만 확인하면 되면
$roots를 해당 폴더 경로로 고정하는 편이 빠릅니다. (스크립트 수정이 필요합니다.) - Ditto 설치 경로가
C:\Program Files\Ditto와 다르면 스크립트와 등록 명령어의 경로를 실제 경로로 바꿔주세요.
정리
여러 PC 공유는 데이터베이스 파일을 원드라이브에 두고, 동기화가 끝난 뒤에 Ditto를 실행하는 게 핵심입니다. 간단하게는 로그온 3분 후 실행, 정확하게는 동기화 완료 대기 스크립트를 쓰세요. 단, 한 번에 한 PC만 쓰는 전제라는 점은 잊지 마세요.
써보면서 막히는 부분이 있으면 댓글로 남겨주세요!