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
동일한 크기의 파일을 건너뛰어야 합니다.)
당신이 해야 할 일은 마지막 백업 이후 권한이 변경되었는지, 그렇지 않은 경우 백업 디렉터리에서 권한이 변경된 이유를 알아내는 것입니다.