답변:
find
명령을 사용하여 shred
재귀 적 으로 실행 하십시오 .
find <dir> -type f -exec shred {} \;
man shred
.
srm
@Cookie의 답변에서 적어도이 문제를 해결하려고 시도합니다).
-exec shred {} +
파쇄는 여러 개의 인수를 허용하므로 더 빨리 만드는 데 사용하십시오 .
파쇄 조심!
파쇄 맨 페이지에서 :
주의 : 파쇄는 파일 시스템이 데이터를 덮어 씁니다라는 매우 중요한 가정에 의존합니다. 이것은 전통적인 방식으로 수행되지만 많은 현대 파일 시스템 디자인은이 가정을 만족시키지 않습니다. 다음은 파쇄가 유효하지 않거나 모든 파일 시스템 모드에서 유효하지 않을 수있는 파일 시스템의 예입니다.
AIX 및 Solaris (및 JFS, ReiserFS, XFS, Ext3 등)와 함께 제공되는 것과 같은 로그 구조 또는 저널 파일 시스템
RAID 기반 파일 시스템과 같이 일부 쓰기에 실패하더라도 중복 데이터를 작성하고 계속 수행하는 파일 시스템
Network Appliance의 NFS 서버와 같은 스냅 샷을 작성하는 파일 시스템
NFS 버전 3 클라이언트와 같은 임시 위치에 캐시하는 파일 시스템
압축 파일 시스템
ext3 파일 시스템의 경우, 위의 면책 조항은 data = journal 모드에서만 적용됩니다 (따라서 메타 데이터뿐 아니라 파일 데이터를 저널링합니다). data = ordered (기본값) 및 data = writeback 모드 모두에서 파쇄가 정상적으로 작동합니다. mount 매뉴얼 페이지 (man mount)에 설명 된대로 / etc / fstab 파일의 특정 파일 시스템에 대한 마운트 옵션에 data = something 옵션을 추가하여 Ext3 저널링 모드를 변경할 수 있습니다.
또한 파일 시스템 백업 및 원격 미러에는 제거 할 수없는 파일의 사본이 포함되어 있으며 나중에 파쇄 된 파일을 복구 할 수 있습니다.
솔루션 : 암호화 된 파일 시스템을 사용하고 파일을 삭제하십시오.
shred
데이터 암호화 사용 및 데이터 암호화는 오프라인 저장 장치에서 데이터를 읽지 못하도록합니다 (도난 또는 경찰 생각). 파일 시스템이 마운트되면 우리는 어느 경우 에나 좋은 유닉스 권한으로 돌아가고 데이터 보호는 OS 보안과 적절한 시스템 관리의 작업이됩니다. 선행 파일 시스템 암호화는 전략적으로 사용하는 것보다 미사용 데이터를 보호하는 데있어 결코 나쁘지 않습니다shred
!
대신 보안 삭제를 사용하십시오.
sudo apt-get install secure-delete
srm -r pathname
끝난. 보안 삭제는 파쇄보다 훨씬 많은 편집증이며 3 대신 38 패스를 사용합니다. 빠른 단일 패스를 수행하려면
srm -rfll pathname
fll은 덜 무작위적인 데이터 생성기를 제공하며 단일 패스 만 제공합니다.
find
파일 이름을 자르거나 연결을 해제하기 전에 파일 이름을 바꾸어 저장된 파일 이름을 지우려고 하는 제안 된 기반 방법에 비해 추가 이점이 있습니다.
이 스택 오버플로 링크 ' CentOS에서 파일을 영구적으로 안전하게 삭제 '를 사용 하여이 답변을 잘 알려진 파쇄 옵션과 결합하십시오 .
find <directory> -depth -type f -exec shred -v -n 1 -z -u {} \;
편집 : 단일 파일을 파쇄하는 가장 좋은 대답 은 저널링 된 파일 시스템의 일부 또는 전부에 버퍼가 있기 때문에 파일을 삭제하기 전에 미디어에 변경 사항을 기록하는 동기화를 강제 한다는 점에 유의하십시오 .
가능하면 find 명령은 다음을 실행하는 파일에서 쉘 스크립트를 호출해야합니다.
shred -v -n 1 /path/to/your/file #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u /path/to/your/file #overwriting with zeroes and remove the file
각 파일에.
rm -rvf $1
쉘 스크립트에 추가 한 디렉토리를 제거하지 않기 때문에 추가 할뿐입니다 (여기서 $ 1은 / path / to / your / file에서 {}
확장에서 전달 된 파일입니다 find... -exec
)
depth
여기합니까? 또한 후행 백 슬래시에 대해 확신
find /your/directory -exec shred {} \;
find [dirname] -depth -type f -exec shred -n1 {} \;
[dirname] 디렉토리에서 파일에 대한 깊이 우선 검색을 수행 한 다음 shred -n1
각 파일 에서 명령 을 실행 합니다. 파일 및 / 또는 디렉토리를 제거 할 때는 -depth
이 경우에 꼭 필요한 것은 아니지만 기본값으로 추가 하는 것이 좋습니다. 와 명령의 종류를 실행하는 경우 rm -rf
대신 shred
, -depth
디렉토리의 내용 (따라서 오류를 일으키는) 삭제하려고 시도하기 전에 디렉토리가 삭제되지 않도록하기 위해 필요합니다.
shred -N 1
기본값은 3 번 파쇄되므로 뱀 오일이므로을 사용해야합니다 . 한 번이면 충분하거나 30 번은 작동하지 않습니다.
shred
디렉토리 제거를 포함하여 내가 찾은 가장 철저한 방법은 다음과 find
같이 스크립트를 호출하는 것입니다 shred
.
이 방법은 또한 공백이있는 파일 이름을 올바르게 처리합니다.
먼저- shred
스크립트 (내 이름을 지정 dirShredder.sh
하고 /root
디렉토리에 저장했습니다 .
shred -v -n 1 "$1" #overwriting with random data
sync #forcing a sync of the buffers to the disk
shred -v -n 0 -z -u "$1" #overwriting with zeroes and remove the file
rm -rvf "$1" # call rm to remove the directories
그런 다음 스크립트를 다음과 같이 호출하십시오.
find /volume1/pathToShred/ -mindepth 1 -depth -exec /root/dirShredder.sh "{}" \;
killit.sh
파일 실행 파일 ( chmod +x
) 을 표시하고 물론 파쇄하려는 디렉토리의 경로를 업데이트하고 dirShredder.sh
다른 곳에 저장 한 경우 경로를 업데이트하십시오 .
NOTA BENE는 - shred
복사 -에 - 쓰기 파일 시스템 (ZFS, BTRFS, 등)에, 심지어 저널링 파일 시스템에 문제가 있습니다. "암호화 된 파일 시스템"이외의 다른 방법으로이 문제를 처리 할 수있는 "최상의"방법은 없지만 실제로 이것이 얼마나 효과적인지 잘 모르겠습니다.
얻을 수있는 가장 가까운 것은 파쇄 작업 후 드라이브의 모든 빈 공간을 임의의 데이터로 덮어 쓰는 것입니다 (0이 아니라 항상 신뢰할 수있는 것 같지는 않습니다). 또한 SSD는 TRIM과 같은 다른 고려 사항이있을 수도 있습니다.
나는 여기에 들어 가지 않을 것입니다. 다른 질문에 대한 답변 (예 :이 질문에 대한 사용자 알 수없는 답변)과 인터넷을 통해 이러한 주제를 다루는 많은 토론이 있으므로 보안 수준이 필요한 경우 검색하십시오.