rsync를 사용하여 내 컴퓨터에 데이터를 복원할 수 없습니다.

rsync를 사용하여 내 컴퓨터에 데이터를 복원할 수 없습니다.

내 Linux Mint 20.2 시스템은 다음의 데이터로 설정되었습니다.

/home/user/Desktop
/home/user/Documents
/home/user/Pictures
/home/user/Videos
/home/user/Downloads
/home/user/GitHub

나는 다음을 사용하여 이 데이터를 백업합니다: rsync -ac --info=progress2 --delete --keep-dirlinks /home/user/{Downloads,Desktop,Documents,GitHub,Pictures,Videos} /media/user/<DRIVE-NAME>. <DRIVE-NAME> might beTOSHIBA -EXT orCRUCIALX6-2` 외부 드라이브가 몇 개 있으므로 이것이 기본 구문입니다. 이것은 훌륭하게 작동합니다. 새로운 로컬 파일과 변경/변경/업데이트된 로컬 파일이 외부 드라이브에 백업되므로 외부 드라이브는 항상 최신 상태를 유지하며 로컬에서 삭제한 모든 항목은 외부 드라이브에서 삭제됩니다. 이것이 내가 원하는 행동이다.

최근에 다음을 사용해 보았습니다. 외부 드라이브에서 로컬 저장소로 rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT /home/user내 데이터(포함되지 않음)를 복원하려고 합니다 . 최신 정보가 아닌 것을 알고 실망했습니다 ./GitHubTOSHIBA-EXT/home/user/Documents

결과적으로 , , , 및 /home/user/TOSHIBA-EXT디렉토리를 포함하는 가 생성 됩니다 . 그래서 rsync 매뉴얼 페이지를 열었습니다.DownloadsDesktopDocumentsPicturesVideos

이것들은 작동하지 않습니다:

rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/{Downloads, Desktop, Documents, Pictures, Videos} /home/user/{Downloads, Desktop, Documents, Pictures, Videos}- 다운된 것 같아요.

rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/{Downloads, Desktop, Documents, Pictures, Videos} /home/user/- 다운된 것 같아요.

rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/ /home/user/{Downloads, Desktop, Documents, Pictures, Videos}- 다운된 것 같아요.

rsync -ac --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/ /home/user/- 다음 오류로 인해 실패합니다: cannot delete non-empty directory: .local/shore/Trash/files/Videos}/TOSHIBA-EXT. 다른 오류도 비슷합니다.

rsync -acr --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/ /home/user/- 반환된 오류는 위와 유사합니다.

rsync -acr --delete --keep-dirlinks --exclude='GitHub' /media/user/TOSHIBA-EXT/ /home/user/- 만들다 /home/user/TOSHIBA-EXT.

내가 추구하는 행동은 다음과 같습니다

이 디렉터리의 내용을 복사하세요. 재개됨:
/media/user/TOSHIBA-EXT/Desktop /home/user/Desktop
/media/user/TOSHIBA-EXT/Documents /home/user/Documents
/media/user/TOSHIBA-EXT/Pictures /home/user/Pictures
/media/user/TOSHIBA-EXT/Videos /home/user/Videos
/media/user/TOSHIBA-EXT/Downloads /home/user/Downloads

rsync 매뉴얼 페이지와 duckduckgo 결과를 읽었지만 도움이 필요한 것 같습니다.

위의 복구 동작을 수행하려면 복구 명령을 어떻게 변경해야 합니까?

답변1

복구를 위해 소스 경로에 후행 슬래시가 누락되었습니다. 문서( man rsync)에는 다음과 같이 나와 있지만 페이지가 길어서 놓치기 쉽습니다.

/소스에 대한 후행을 "이름으로 디렉터리 복사"가 아니라 "이 디렉터리의 내용 복사"로 생각할 수 있지만 두 경우 모두 포함 디렉터리의 속성이 대상의 포함 디렉터리로 전송됩니다.

-c( ) 플래그 도 제거해야 합니다 --checksum. 여기에는 아무런 가치도 추가되지 않으며 백업 속도가 크게 느려집니다.

따라서 백업은 대상에 , 등의 Downloads디렉터리 를 생성하여 다음과 같아야 합니다 .DesktopDocuments

rsync -avi --delete /home/user/{Downloads,Desktop,Documents,GitHub,Pictures,Videos} /media/user/<DRIVE-NAME>

해당 전체 복원은 다음과 같습니다. 대상에서 최신 파일을 업데이트하지 않도록 u( )를 추가하고 백업되지 않은 디렉터리 및 파일을 삭제하지 않도록 제거했습니다.--update--delete

rsync -auvi /media/user/<DRIVE-NAME>/ /home/user/

답변2

누군가 이런 글을 올렸습니다. 나는 당신이 여분의 / 로 끝난 것 같아요.

후행 슬래시가 중요합니다. 소스 끝에 "/"를 사용하면 rsync는 마지막 폴더의 내용을 복사합니다. 소스 끝에 "/"가 사용되지 않으면 rsync는 마지막 폴더와 ​​해당 내용을 복사합니다. 참고: 소스 디렉터리의 후행 슬래시(/)는 rsync 명령의 동작을 수정합니다.

하지만 여전히 스크립트를 실행하고 작동하는지 확인해야 하는 경우가 많습니다. 내 데이터는 /mnt/data에 마운트된 파티션에 있으며 문서, 음악 등과 같은 모든 폴더가 포함되어 있습니다. 플래시 드라이브는 일반적으로 파티션 레이블이 data256이므로 /media/fred/data256에 자동으로 마운트됩니다.

이것이 나의 회복입니다:

rsync -aruvP /media/fred/data256/Documents /mnt/data

다음은 256GB 플래시 드라이브에 복사한 사본입니다.

rsync -aruvlP --delete /mnt/data /media/fred/data256

모든 폴더를 복사하는 데 128GB 플래시 드라이브를 사용하지 않을 것입니다.

rsync -aruvP --delete /media/fred/data128/Documents /mnt/data
rsync -aruvP --delete /mnt/data/Documents /media/fred/data128

관련 정보