rsync가 일관되지 않게 하드링크에 실패함

rsync가 일관되지 않게 하드링크에 실패함

rsync -avz --link-dest=$oldbkp $source $newbkp코어에서 사용하는 백업 스크립트가 있습니다. 문제는 rsync가 의 파일이 변경되지 않았음을 인식하지 못하는 경우가 많기 때문에 에서 하드 링크하는 대신 $source복사만 한다는 것입니다 . 또 다른 혼란스러운 점은 일관성이 없다는 것입니다. 일부 파일에는 예상대로 작동하는 하드 링크가 있습니다. 백업 파티션은 ntfs입니다.$newbkp$oldbkp

여기에서 볼 수 있듯이, 이전 백업 이후 단 한 시간 만에 수행된 백업은 내용에 거의 변화가 없이 전체 2GB의 새 데이터를 차지했습니다(이것은 내 집 컴퓨터입니다).

$ du -hsc 20170424-1559 20170424-1724
2.6G    20170424-1559
2.1G    20170424-1724
4.6G    total

나는 몇 가지 예를 시도했습니다 stat. 다음은 실패한 하드 링크입니다(sha256은 모두 동일합니다).

$ stat 20170424-1559/Documents/depeche 
  File: 20170424-1559/Documents/depeche
  Size: 21400           Blocks: 48         IO Block: 4096   regular file
Device: 811h/2065d      Inode: 140380      Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/   marek)   Gid: ( 1000/   marek)
Access: 2017-04-24 17:14:00.271104500 +0200
Modify: 2016-08-01 16:30:38.000000000 +0200
Change: 2017-04-24 15:59:44.407252700 +0200
 Birth: -

$ stat 20170424-1724/Documents/depeche 
  File: 20170424-1724/Documents/depeche
  Size: 21400           Blocks: 48         IO Block: 4096   regular file
Device: 811h/2065d      Inode: 361117      Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/   marek)   Gid: ( 1000/   marek)
Access: 2017-04-24 17:24:55.732080500 +0200
Modify: 2016-08-01 16:30:38.000000000 +0200
Change: 2017-04-24 17:24:55.736274500 +0200
 Birth: -

$ stat ~/Documents/depeche
  File: /home/marek/Documents/depeche
  Size: 21400           Blocks: 48         IO Block: 4096   regular file
Device: 2ah/42d Inode: 4397        Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   marek)   Gid: ( 1000/   marek)
Access: 2017-03-07 09:51:07.681090473 +0100
Modify: 2016-08-01 16:30:38.000000000 +0200
Change: 2016-11-06 19:58:14.053859011 +0100
 Birth: -

성공적인 하드 링크는 다음과 같습니다(sha256도 동일함).

$ stat 20170424-1559/Documents/ios7bkplist.txt 
  File: 20170424-1559/Documents/ios7bkplist.txt
  Size: 1983            Blocks: 8          IO Block: 4096   regular file
Device: 811h/2065d      Inode: 344437      Links: 4
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/   marek)   Gid: ( 1000/   marek)
Access: 2017-04-24 15:59:44.574850700 +0200
Modify: 2016-04-04 22:03:55.000000000 +0200
Change: 2017-04-24 17:24:56.022250400 +0200
 Birth: -

$ stat 20170424-1724/Documents/ios7bkplist.txt 
  File: 20170424-1724/Documents/ios7bkplist.txt
  Size: 1983            Blocks: 8          IO Block: 4096   regular file
Device: 811h/2065d      Inode: 344437      Links: 4
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/   marek)   Gid: ( 1000/   marek)
Access: 2017-04-24 15:59:44.574850700 +0200
Modify: 2016-04-04 22:03:55.000000000 +0200
Change: 2017-04-24 17:24:56.022250400 +0200
 Birth: -

$ stat ~/Documents/ios7bkplist.txt            
  File: /home/marek/Documents/ios7bkplist.txt
  Size: 1983            Blocks: 8          IO Block: 4096   regular file
Device: 2ah/42d Inode: 4413        Links: 1
Access: (0777/-rwxrwxrwx)  Uid: ( 1000/   marek)   Gid: ( 1000/   marek)
Access: 2017-02-28 20:03:32.858085513 +0100
Modify: 2016-04-04 22:03:55.000000000 +0200
Change: 2016-11-06 19:58:14.550522987 +0100
 Birth: -

-c기본적으로 rsync를 사용하여 긴 파일 검사를 강제할 때도 동일한 일이 발생합니다.

내가 간과한 것이 있나요?

답변1

질문은 다음과 같습니다. (에서 man rsync):

...파일의 모든 보유 속성은 동일해야 합니다(예:권한, 소유권 가능) 파일을 함께 연결합니다.

귀하의 경우 파일의 권한은 (귀하의 예에서)

Access: (0644/-rw-r--r--) # hardlink failed (original)
Access: (0777/-rwxrwxrwx) # hardlink failed (backup)

Access: (0777/-rwxrwxrwx) # hardlink created (original)
Access: (0777/-rwxrwxrwx) # hardlink created (backup)

예를 들어

$ chmod 777 A/file
$ rsync -az A/ B/
$ chmod 644 A/file
$ rsync -az --link-dest=$PWD/B/ A/ C/

밝혀지다

$ du -hsc A B C
965M    A
965M    B
965M    C
2.9G    total

동시에 권한을 원래 권한으로 재설정하면 결과는 다음과 같습니다.

$ chmod 777 A/file
$ rsync -az --link-dest=$PWD/B/ A/ D/
$ du -hsc A B D
965M    A
965M    B
4.0K    D
1.9G    total

일부 파일을 사용하여 작동하도록 시도해 볼 수 있습니다. (을 사용하면 --size-only동일한 크기의 파일을 건너뛰어야 합니다.)

당신이 해야 할 일은 마지막 백업 이후 권한이 변경되었는지, 그렇지 않은 경우 백업 디렉터리에서 권한이 변경된 이유를 알아내는 것입니다.

관련 정보