rsync를 사용하여 동일한 파일을 다른 파일 이름으로 동기화 [중복]

rsync를 사용하여 동일한 파일을 다른 파일 이름으로 동기화 [중복]

~/music모든 음악 파일이 포함된 디렉토리와 /media/backup/music첫 번째 파일과 동기화하는 데 사용하려는 디렉토리가 있습니다 rsync. 처음에는 예상대로 모든 음악 파일이 포함된 디렉터리를 rsync -a ~/music /media/backup만들었습니다 .music/media/backup

그 이후로 나는 그 안에 있는 많은 파일 이름을 수정했고 ~/music이제 그 변경 사항을 동기화하고 싶습니다. 을 수행하면 rsync -ain이러한 수정 사항이 다음과 같이 등록되는 것으로 보입니다.새로운파일 - 기존 대상 파일 이름만 업데이트하는 대신 백업 디렉터리에 새 파일 세트를 생성합니다. 내 파일의 대부분은 크기가 크므로 이름을 변경할 때마다 다시 복사할 필요가 없습니다.

rsync새 파일을 생성하지 않고 원본 파일 이름만 업데이트하여 동일한 파일을 다른 이름으로 동기화할 수 있는 방법이 있나요 ? 아마도 --delete불필요한 파일을 삭제하는 데 이 옵션을 사용할 것입니다. 하지만 더 좋은 방법이 있다면 알고 싶습니다.


예:

$ cd example
$ rsync -a var backup/                 # rsync var under backup/var
$ tree .
.
├── backup
│   └── var
│       ├── JSON.gif
│       └── logs
│           ├── xinit.log
│           └── x.log
└── var
    ├── JSON.gif
    └── logs
        ├── xinit.log
        └── x.log


$ mv var/JSON.gif var/JSON-LOGO.gif    # rename some file
$ mv var/logs var/log                  # rename some directory
$ rsync -a var backup/                 # sync the changes
$ tree .
.
├── backup
│   └── var
│       ├── JSON.gif                   # don't want this one
│       ├── JSON-LOGO.gif              # want -only- this one
│       ├── log                        # same here
│       │   ├── xinit.log
│       │   └── x.log
│       └── logs                       # don't want this one either
│           ├── xinit.log
│           └── x.log
└── var
    ├── JSON-LOGO.gif
    └── log
        ├── xinit.log
        └── x.log

답변1

이 옵션을 살펴볼 수도 있습니다 --fuzzy.

매뉴얼 페이지를 인용하면 다음과 같습니다.

이 옵션은 rsync에게 누락된 대상 파일에 대한 기본 파일을 찾아야 한다고 지시합니다. 현재 알고리즘은 대상 파일과 동일한 디렉터리에서 크기와 수정 시간이 동일한 파일 또는 유사한 이름을 가진 파일을 찾습니다. 발견되면 rsync는 난독화된 기본 파일을 사용하여 전송 속도를 높이려고 시도합니다.

--delete 옵션을 사용하면 잠재적인 퍼지 일치 파일이 삭제될 수 있으므로 이를 방지해야 하는 경우 --delete-after를 사용하거나 일부 파일 이름 제외를 지정하십시오.

이 설명에 따르면 이 알고리즘은 그다지 똑똑하지 않으며 이름이 변경된 디렉터리나 다른 디렉터리에 있는 동일한 파일에서는 작동하지 않습니다.

답변2

을 사용해야 합니다 --delete.

다른 방법이 있는지는 모르겠지만 음악 파일은 최대 10MB 이므로 다시 복사하는데 문제는 없습니다.

편집: scai가 말했듯이 을 사용할 수 있지만 --fuzzy실제로는 그렇지 않습니다. 이는 작업 완료를 보장하지 않으며 궁극적으로 오탐지로 이어질 수 있는 많은 변수에 따라 달라집니다.

관련 정보