내 노트북의 일부 디렉터리를 외장 하드 드라이브에 백업하고 싶습니다.
외장 하드 드라이브의 대상에는 이미 내 노트북에 있는 디렉터리의 이전 백업이 있습니다.
외장 하드 드라이브의 백업을 업데이트하는 방법을 알고 싶습니다. 예를 들어, 다음 명령이 예상대로 작동합니까?
rsync -a --delete /path/to/source/dir /path/to/dest/dir
rm -r /path/to/dest/dir/*
처음에는 나와 똑같이 작동합니까rsync -a /path/to/source/dir /path/to/dest/dir
?rsync
대상에서 이전 백업을 활용하여 오류 없이 새 백업을 더 빠르게 생성하려면 어떻게 해야 합니까 (일부 파일은 마지막 백업 이후 변경되었을 수 있지만 더 많은 파일은 변경되지 않음)? 이전 백업을 활용하는 또 다른 이유는 아무것도 삭제하지 않고 새 백업을 저장할 외장 하드 드라이브의 공간이 부족하기 때문입니다.
감사해요.
답변1
예, rsync
좋은 해결책이지만 사용하는 것이 더 좋습니다(후행 슬래시 참고).
rsync -a --delete /path/to/source/dir/ /path/to/dest/dir/
인용하자면 man rsync
:
소스의 후행 슬래시는 대상에 추가 디렉터리 수준이 생성되지 않도록 이 동작을 변경합니다. 소스의 후행 /를 "이름으로 디렉토리 복사"가 아닌 "이 디렉토리의 내용 복사"로 생각할 수 있습니다 [...]
미러(정확히 동일한 파일)를 사용하면 --delete
미러가 없으면 추가 백업을 얻을 수 있습니다(소스에서 삭제된 파일은 복사본에 남아 있음).
--delete
잘못된 디렉터리를 대상으로 지정하면 많은 파일이 삭제될 수 있다는 위험이 있으므로 잘 테스트된 스크립트로만 사용을 제한하거나 -n
/를 사용하여 --dry-run
어떤 일이 먼저 발생하는지 확인하는 것이 가장 좋습니다.
답변2
- 대상에서 이전 백업을 활용하여 rsync가 오류 없이 새 백업을 더 빠르게 생성하도록 하려면 어떻게 해야 합니까(일부 파일은 마지막 백업 이후 변경되었을 수 있지만 더 많은 파일은 변경되지 않음)?
기본적으로 백업은 rsync
이 작업을 수행합니다.만약에당신은 통과했습니다 -a
(그리고 올바른 경로를 찾기 위해 @xenoid의 대답을 따랐습니다). 그리고 어쨌든 합격하고 싶기 -a
때문에 모두 좋습니다. 구체적인 이유는 약간 미묘합니다.
Rsync는 크기나 마지막 수정 시간이 변경된 파일을 찾는 "빠른 확인" 알고리즘(기본값)을 사용하여 전송해야 하는 파일을 찾습니다.
rsync가 파일을 전송할 필요가 없다고 생각하면 파일을 전송하지 않습니다. 이는 다음 옵션이 암시되어 있기 때문에 작동합니다 -a
.
-t, --times preserve modification times
따라서 마지막으로 수정된 시간은동일한백업 파일의 내용은 원본 파일의 내용과 동일합니다.
실수하지 마세요
rsync
파일 내용을 수정한 다음 마지막 수정 시간을 재설정하여 가짜로 만들지 마세요 . :-). 그렇지 않으면 파일이 무시됩니다.
나는 이 문제에 대해 들어본 적이 없으므로 걱정하지 않습니다. rsync
이 방법은 일반적으로 기본 백업에 사용됩니다.
다른 제한 사항이 발생할 가능성이 더 높을 것으로 예상됩니다. 즉, 파일 시스템 스냅샷을 사용하지 않고 $HOME을 백업하는 경우 백업이 실행되는 동안 Firefox 프로필이 수정될 수 있으며 백업에서 일관되게 작동하는 Firefox 프로필을 얻지 못할 수 있습니다. 또는 삭제/덮어쓴 파일을 복구하고 싶지만 이전 백업을 보관하지 않았기 때문에 백업에서 삭제/덮어썼을 수 있습니다.