SSD에서 HDD로 폴더를 백업할 때, 가장 안전한 방법은?
문제점: mv와 cp의 한계
•
파일을 단순히 이동하지만, 중간에 작업이 끊기면 데이터 손상 가능성이 높음
•
복사 중에 에러가 발생하면 파일이 일부만 이동되거나 손실될 위험
•
모든 파일을 다시 복사하므로 시간이 오래 걸림
•
어디까지 복사되었는지 확인할 방법이 없음
•
파일이 이미 존재해도 덮어쓰므로 불필요한 디스크 작업 발생
해결책: rsync를 사용하자!
rsync는 효율적인 데이터 전송을 위해 변경된 파일만 복사하고, 네트워크 환경에서도 안정적인 복사를 지원하는 강력한 툴이다.
기본적인 rsync 백업 명령어
rsync -av --progress {from_dir} {to_dir}
Shell
복사
옵션 설명
•
a (archive) : 파일 권한, 심볼릭 링크, 타임스탬프 유지 (백업에 필수!)
•
v (verbose) : 진행 상황 출력
•
--progress : 각 파일별 전송 진행률 표시
•
{from_dir} → {to_dir} : {from_dir}폴더 안의 모든 파일을 {to_dir}에 복사
•
cp와 다르게 파일이 이미 존재하면 건너뛰고, 새로운 파일만 복사
•
중단되어도 다시 실행하면 변경된 부분만 복사
파일이 존재하는 경우 건너뛰고 복사하려면?
rsync -av --ignore-existing --progress {from_dir} {to_dir}
Shell
복사
•
--ignore-existing : 이미 존재하는 파일은 건너뜀
•
속도 향상: 기존 파일을 덮어쓰지 않으므로 불필요한 I/O 작업을 줄임
백업 후 원본 파일 삭제 (파일 이동)
rsync -av --ignore-existing --checksum --remove-source-files --progress {from_dir} {to_dir}
find {from_dir} -type d -empty -delete
Shell
복사
설명
1.
rsync를 사용해 파일을 HDD로 이동 (-remove-source-files 옵션 사용)
2.
find 명령어로 빈 폴더를 정리 (type d -empty -delete)
•
mv보다 안전함: 파일이 정상적으로 복사된 후 삭제됨
•
cp보다 효율적: 이미 존재하는 파일을 건너뛰어 속도를 높임
추가적인 안전장치: 체크섬(--checksum) 비교
파일 크기와 수정 시간이 같아도 실제 데이터가 다를 수 있음. 이를 방지하려면 --checksum 옵션을 추가!
rsync -av --ignore-existing --checksum --remove-source-files --progress {from_dir} {to_dir}
Shell
복사
•
--checksum : 파일 내용을 비교하여 변경된 경우에만 복사
•
무결성 검사를 수행하여 데이터 손상을 방지
rsync를 두 개 동시에 실행해도 될까?
rsync -av --ignore-existing --checksum --remove-source-files --progress {from_dir} {to_dir} &
rsync -av --ignore-existing --checksum --remove-source-files --progress {from_dir} {to_dir} &
Shell
복사
1.
파일 삭제 충돌 → rsync가 파일을 삭제하는 과정에서 다른 rsync가 해당 파일을 찾지 못할 수 있음
2.
데이터 손실 가능성 → 일부 파일이 복사되지 않았는데 삭제될 수도 있음
3.
디스크 I/O 병목 현상 → SSD나 HDD에서 과부하 발생 가능
rsync -av --ignore-existing --checksum --progress {from_dir} {to_dir}
rm -r ~/dataset
Plain Text
복사
tmux 세션에서 실행 중인지 확인하는 방법
백업 작업이 오래 걸리는 경우, tmux를 사용하면 안전하게 진행 가능
if [ -n "$TMUX" ]; then
echo "현재 tmux 세션에서 실행 중입니다."
else
echo "tmux 세션이 아닙니다."
fi
Plain Text
복사
tmux new -s backup
rsync -av --ignore-existing --checksum --progress {from_dir} {to_dir}
Plain Text
복사
•
tmux new -s backup : backup이라는 새로운 세션 생성
•
Ctrl + B → D를 눌러 세션을 백그라운드로 이동
•
다시 접속하려면 tmux attach -t backup
결론: rsync로 안전하게 SSD → HDD 백업하자!
정리: 상황별 추천 rsync 명령어
목적 | 명령어 |
기본 백업 | rsync -av --progress {from_dir} {to_dir} |
이미 존재하는 파일 건너뛰기 | rsync -av --ignore-existing --progress {from_dir} {to_dir} |
파일 이동 (백업 후 원본 삭제) | rsync -av --ignore-existing --checksum --remove-source-files --progress {from_dir} {to_dir} && find ~/dataset -type d -empty -delete |
체크섬까지 검증하며 복사 | rsync -av --ignore-existing --checksum --progress {from_dir} {to_dir} |
tmux에서 실행하여 안정적인 백업 | tmux new -s backup && rsync -av --ignore-existing --checksum --progress {from_dir} {to_dir} |