물론 cmp(1)는 두 파일의 내용이 동일한지 알려 주지만 백업에서 복원을 테스트하기 위해 관련(!) 파일 속성도 비교하고 싶습니다.
그래서 내가 다음과 같은 간단한 일을 한다면
mv foo.bar foo.bar.save
deja-dup --restore foo.bar # or some other backup tool
foo.bar와 foo.bar.save의 속성을 비교하고 쉘 스크립트(또는 유사한 스크립트)에서 충분한 동등성을 테스트하려면 어떻게 해야 합니까? 저 할 수 있어요
stat foo.bar{,.save}
그리고 inode, atime 및 ctime(그리고 어떤 이유에서인지 링크 수)을 무시하는 것을 기억하면서 출력을 수동으로 확인하지만 이는 오류가 발생하기 쉽습니다. SELinux 및 기타 속성을 포함하는 cmp-with-attributes 도구가 있습니까? 이상적으로는 "모든" 시스템에서 Fedora 및 ext4 파일 시스템에서 실행되어야 합니다. Perl에서 뭔가를 변경해야 합니까?
(백업이 제대로 작동하는지 테스트하지 않으면 백업할 의미가 없습니다.)
답변1
getallattr() {
[ -L "$1" ] || lsattr -d -- "$1" | sed 's/ .*//;q'
getfattr -hdm- -- "$1" | tail -n +2 | sort
stat -c '%u %g %a %s %x %y' -- "$1"
}
모든 속성을 검색합니다(적어도 쉽게 복원할 수 있는 속성). 내장된 것 stat
보다는 zsh 또는 호환성의 GNU 구현을 가정합니다 . stat
또한 콘텐츠 다이제스트/체크섬 형식을 포함할 수도 있습니다(예: sha1sum/b2sum...).
그럼 해
diff <(getallattr file1) <(getallattr file2)
(ksh, zsh, bash 구문).