원문 캡처 · github.com
원문 캡처 · github.com

dudu는 macOS와 Linux에서 패키지, 런타임, 설정 파일, 터미널 환경 등을 백업하고 새 컴퓨터에서 복원하는 도구다. Homebrew로 설치하거나 스크립트를 실행해 설치한 뒤 dudu backup과 dudu restore 명령을 사용한다.

sh
brew install fontnelle/tap/dudu
sh
curl -fsSL https://raw.githubusercontent.com/fontnelle/dudu/main/install.sh | bash

설치 스크립트는 릴리스가 SHA256SUMS와 일치하는지 확인한다. 백업은 기본적으로 ~/dudu-backups에 저장하며, iCloud Drive와 Google Drive, Apple Notes도 대상으로 지정할 수 있다. 여러 저장 위치를 선택하면 각 위치에 모두 백업하고, 한 곳에서 실패해도 나머지 저장은 계속한다.

백업 대상에는 시스템 패키지와 Node.js 버전, 전역 패키지, Python·Ruby·Go 도구, 셸·Git·SSH 설정, 터미널 프로필, VS Code와 Cursor 설정 및 확장 등이 포함된다. macOS에서는 일부 Dock, Finder, 키보드, 스크린샷 설정도 다룬다. dudu config set exclude macos,ruby처럼 수집기를 제외하거나 dudu config set include brew,node,shell로 일부만 선택할 수 있다.

새 컴퓨터에서는 기존 컴퓨터와 같은 저장 위치를 지정한 다음 dudu restore --dry-run으로 복원 작업을 확인하고 dudu restore를 실행한다. 복원은 Homebrew부터 셸·Git 설정, 런타임, 패키지, 편집기 순으로 진행한다. 이미 설치된 항목은 건너뛰며, 기존 파일과 다른 파일은 <file>.dudu-bak으로 보관한다. 모든 명령은 --dry-run과 --only brew,node,... 옵션을 지원한다.

dudu는 백업에서 토큰이나 비밀번호처럼 보이는 값을 가리고, SSH·AWS 자격 증명 등 키 파일은 복사하지 않는다. 보안 값을 확인할 수 없는 파일도 백업에서 제외한다. 백업은 신뢰할 수 없는 자료로 취급해 체크섬을 확인하고, 패키지 이름과 복원 경로를 제한한다. 암호화를 켜면 AES-256으로 백업을 보호하며, 새 컴퓨터에서 복원하려면 암호가 필요하다.

매일 자동 백업을 설정하는 dudu schedule on은 macOS에서 LaunchAgent, Linux에서 systemd 사용자 타이머를 사용한다. 이 도구는 외부 의존성 없는 Bash로 작성됐으며 macOS 기본 Bash 3.2에서 동작한다고 안내한다. 상세한 기능과 설정은 dudu 저장소에서 확인할 수 있다.