rsync로 Mac 백업하기명령어: rsync -aE --delete ~/Documents/ /Volumes/Backup/Documents/
-E는 macOS 전용 부분이고, 빼면 확장 속성과 리소스 포크를 조용히 잃어요.
-a는 아카이브 모드예요. 하위 폴더까지 들어가고, 권한, 소유자, 타임스탬프, 심볼릭 링크를 보존해요. 모두가 아는 플래그예요.-E는 macOS 확장 속성과 리소스 포크를 보존해요. Finder 태그, 격리 플래그, 사용자 지정 아이콘, 상당한 앱 메타데이터가 여기에 있어요. 없으면 이것들이 사라지고, 아무것도 알려주지 않아요.--delete는 원본에서 사라진 파일을 대상에서도 지워요. 이것이 사본을 미러로 만들고, 가장 신중하게 생각해야 할 플래그예요.-v, 시험 실행은 -n. --delete가 들어간 명령은 처음에 항상 시험 실행하세요.~/Documents는 폴더 자체를 대상 안으로 복사해서 /Volumes/Backup/Documents/Documents가 돼요. ~/Documents/는 그 내용을 복사하며, 거의 항상 이게 의도한 거예요. --delete도 들어간 명령에서 이걸 틀리면 대상에 있던 다른 모든 것이 지워져요.--exclude로: --exclude '.DS_Store', --exclude 'node_modules', --exclude 'Library/Caches'.macOS에 포함된 rsync 버전으로도 충분해요. 더 최신 업스트림 버전을 원한다면 Homebrew에 있고, macOS에서 ACL 처리도 더 나아요.
rsync는 대상을 원본과 같게 만들어요. 그건 사본이고, 사본은 기록이 아니에요. 지난 화요일에 삭제한 문서는 다음 실행 때 백업에서도 사라져요. 그 후에 덮어쓴 파일의 멀쩡한 버전도, 작업이 실행되기 전에 랜섬웨어가 건드린 모든 것도 마찬가지예요.
--delete를 빼도 해결되지 않아요. 지금까지 가졌던 모든 파일이 쌓이는 대상이 될 뿐, 여전히 파일마다 정확히 한 버전이고, 무엇이 현재 것인지 알 방법이 없어요.
--link-dest로 버전 만들기흔히 쓰는 방법은 실행할 때마다 날짜가 붙은 새 디렉터리를 만들고, 바뀌지 않은 파일은 이전 디렉터리에 하드 링크하는 거예요. 그러면 똑같은 파일은 공간을 차지하지 않아요.
DEST=/Volumes/Backup
TODAY=$(date +%F)
rsync -aE --delete \
--link-dest="$DEST/latest" \
~/Documents "$DEST/$TODAY"
ln -snf "$DEST/$TODAY" "$DEST/latest"
이제 날짜별 폴더 하나하나가 전체 백업처럼 보이고, 바뀐 파일만 공간을 차지해요. 대략 Time Machine이 기반으로 하는 아이디어예요.
주의할 점이 두 가지 있어요. 하드 링크는 사본이 독립적이지 않다는 뜻이라, 기반 블록이 손상되면 그것을 공유하는 모든 스냅샷이 영향을 받아요. 그리고 하드 링크를 지원하는 파일 시스템이 필요해서, 외장 드라이브에서는 작동하지만 대부분의 클라우드 폴더 안에서는 작동하지 않아요.
rsync는 저장된 데이터를 암호화하지 않아요. 대상이 클라우드 폴더나 건물 밖으로 나가는 드라이브라면 쓰기 전에 암호화하세요.
tar -cJf - ~/Documents | openssl enc -aes-256-cbc -pbkdf2 -out /Volumes/Backup/documents.tar.xz.enc
그건 속을 알 수 없는 보관 파일 하나예요. 증분 복사가 없고, 전체를 풀지 않고는 파일 하나도 복원할 수 없으며, 암호문 하나에 모든 것이 달려 있어요. 이 절충은 중요하며, 대부분의 사람이 직접 만드는 방식을 그만두는 지점이에요.
macOS에 cron이 아직 있지만 지원되는 방법은 launchd예요. ~/Library/LaunchAgents/에 StartCalendarInterval이 들어간 plist를 두면 스크립트가 매일 실행돼요. 문서와 데스크탑 읽기는 보호되므로, macOS는 실행하는 것에 전체 디스크 접근 권한을 요청해요.
무엇을 예약하든 결과를 실제로 보게 될 곳에 쓰도록 하고, 백업이 최근 것인지 확인하세요.
find /Volumes/Backup -type f -newermt '-7 days' | head
조용히 멈춘 작업이 바로 실패 방식이에요. 화면에 오류를 띄우며 멈추지 않고, 넉 달 전 어느 밤에 멈춰요.
위 명령어들은 복사를 다뤄요. 다루지 않는 것은 무언가 잘못된 날 실제로 원하는 것들이에요. 미러 실행 후에도 살아남는 버전, 파일 하나도 복원할 수 있는 암호화, 모든 조각을 해시와 비교하는 다시 읽기, 그리고 드라이브가 일주일 동안 보이지 않으면 알려주는 무언가요.
이것들은 각각 주말 하루짜리 스크립트 작업이고, 그다음엔 계속 직접 관리해야 해요. Copy Shelter는 같은 생각에 이 부분들을 내장했고, 위치 한 곳까지 무료예요.
rsync 사본에서 Finder 태그가 사라지는 이유는 무엇인가요?macOS에서는 -a만으로 확장 속성이 옮겨지지 않기 때문이에요. -E를 더하세요. ACL도 필요하다면 -A를 쓰고, 시스템 버전보다 더 안정적으로 처리하는 Homebrew 버전을 고려하세요.
네, /Volumes 아래에 마운트한 공유나 SSH를 통해 NAS 자체에 할 수 있어요. SSH가 더 빠르고 마운트 여부에 의존하지 않으며, 많은 NAS에 rsync가 내장되어 있어요.
sudo가 필요한가요?내 홈 폴더라면 필요 없어요. 다만 macOS가 문서, 데스크탑, 다운로드를 읽게 하려면 터미널이나 launchd가 실행하는 것에 전체 디스크 접근 권한을 줘야 해요.
--delete는 위험한가요?시킨 대로 정확히 하고 있고, 그게 위험한 부분이에요. 처음에는 -n으로 시험 실행하고, 대상 경로가 맞는지 확인하세요. --delete와 함께 오타로 잘못된 디렉터리를 지정하면 그곳의 파일이 지워져요.
네, 그게 rsync의 용도예요. 다시 실행하면 빠졌거나 바뀐 것만 전송해요. --partial을 더하면 절반만 전송된 큰 파일을 보관했다가 이어서 받아요.