재귀 적으로 트리의 각 폴더 안에 해시 파일 (sha512sum)을 만드는 방법은 무엇입니까?


1

주어진 트리의 경우, / var / ftpd라고하면 트리의 각 폴더에 해당 트리의 내용과 함께 해시 파일을 어떻게 만듭니 까? sha1sum 및 sha512sum에는 재귀 옵션이 없습니다.

답변:


1

해결책은 FWIW입니다.

user@host bin]$ cat mkshaindir 
#!/bin/dash
cd $1
sha512sum * >.sha512sum

[user@host bin]$ find /var/ftpd -type d -print0 | xargs -0 -i  mkshaindir  {}

mkshaindir은 새로운 폴더 나 최근에 변경된 파일의 해시를 만들 필요가 있기 때문에 제 목적을 위해 별도의 구성 요소입니다.

나머지는 독자를위한 운동으로 남겨 둡니다.

참고 : sha512sum은 파일이 아닌 입력 (디렉토리, 블록 파일 등)에 대해 STDERR에 불만을 제기합니다.


+1, 일부 세부 사항은 좋을 수도 있지만. (예 : '흥미로운'파일 이름을 해결하기 위해 -print0 xargs-0을 사용하고, -type d를 사용하여 찾기에서 지시문 만 선택)
— Hennes

Dennens에게 사과 한 Hennes는 구글이 없습니까? 맨 페이지가 없습니까?
— Chris

네. 또한 그것을 모두 알고있는 도둑질하는 배심원. 그래도 우리가 조금 더 덧붙이면 사람들이 읽는 것이 가장 간단합니다.
— Hennes

사람들은이 사이트에서 해결책이나 영감을 얻습니다. 해결책을 모색하는 사람들은 잘라 내기 및 붙여 넣기 방법 및 방법을 묻지 않을 것입니다. 영감을 구하는 사람들은 나 자신과 마찬가지로 man 페이지와 google을 읽습니다. 전자는 토론에 관심이 없으며, 후자는 자신의 연구를 통해 "이해"하지 못한다면 읽을 수 있습니다.
— Chris

0

해시 파일을 저장하면 해시가 무효화되므로 스크립트는 해시 파일 자체를 계산에 포함하지 않아야합니다.
게다가, 나는 find -exec 자원을 절약하기 위해 :

find /var/ftpd -type d -print0 ! -name .sha512sum -exec mkshaindir {} \;

숨겨진 파일이 발견되면 귀하의 진술은 사실입니다 (일명 도트 파일 [예 : 프로파일]). 해시 값을 저장하기 위해 도트 파일을 사용하는 이유를 들으십시오. 한 행에 오류가있어 해시 파일이 무효화되지 않습니다. sha512sum -c hashfile은 하나의 파일에 오류가있어 전체 파일이 유효하지 않다고보고합니다. 과정에 익숙한 사람은 닭고기 / 달걀 문제이며 적용되지 않는 파일에서 실패한 한 줄을 무시한다는 것을 이해할 수 있습니다.
— Chris

변경된 파일에 대한 하위 트리를 확인하는 좀 더 일반적인 경우를 생각했습니다. 따라서 원칙적으로 도트 파일을 제외시키지 않고 두 번째로 스크립트로 하위 트리를 검사하고 종료 값 (하위 트리에서 변경된 단일 파일이 아닌 한 파일 변경됨)을 반환합니다. 그래서 나는 .sha512sum 체크섬을 만들 때 또는 체크섬 파일을 확인할 때. 그러나 귀하의 유스 케이스에 대해서는 일반성이 중요하지 않다는 것에 동의합니다.
— user1016274
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.