rm -rf / * 라이브러리 삭제 방지 : 휴지통 메커니즘 설정
1. 전면에 쓰기
rm -rf /*
형태는 많이있다 :
rm -rf /*
(앞뒤로 똑바로 걷기)rm -rf $abc/*
(변수가 존재하지 않습니다)rm -rf abc /*
(하나 더 하드 코어 공간 "")
- …
그것을 이해하는 사람은 자연스럽게 그 힘을 이해할 것입니다.
이를 위해, 다시 이해뿐만 아니라 rm
, rm -rf
뿐만 아니라 공간 뿐만 아니라 다시 발생과 같은 일을 방지하기 위해 몇 가지 안전 조치를 할 수 있습니다.
2. 두 가지 사고 방식
다음 두 가지 아이디어는 본질적으로 동일 할 수 있습니다.
- 삭제 해야하는 파일을 다음 과 같이 지정된 디렉토리로 이동 (삭제하지 않음) 합니다.
/trash/
- 정기적으로 청소
/trash/
중인 파일
그러나 특정 용도에는 여전히 약간의 차이가 있습니다 (권장 방법 2).
2.1 방법 1 : rm은 mv에 의해 구현 된 함수를 가리 킵니다.
참고 : 버그를 작성하고 실수로 rm -fr / *을 실행했습니다. 라이브러리를 삭제했습니다. 도망 칠까요?
방법
-
휴지통 디렉토리를 만듭니다.
mkdir /home/.trash
-
remove.sh 스크립트 작성
-
~/.bashrc
자체 구축 된remove.sh
대체rm
명령으로 수정 -
정기적으로 휴지통을 비우도록 crontab을 설정합니다. 예를
들어 매일 0:00에 휴지통을 비우도록 설정합니다.
(1) 편집 입력crontab -e
(2) 다음을 작성하십시오.
0 0 * * * rm -rf /home/.trash/*
(3) 편집 종료 :control x
-
source ~/.bashrc
.bashrc를 적용하기 위해 실행 -
예를 들면 사용 :
rm ./test_delete
불리
- 단점 1 :
/home/.trash/
쉬움Permission denied
- 단점 2 : 이미
rm
명령을 사용중인 스크립트 에 영향을 미칠 수 있음
2.2 방법 2 : mv로 구현 된 새 명령 만들기
참조 : Linux rm 명령 복구 메커니즘
방법
- 루트 정체성
- 다음 코드가 작성
/etc/bashrc
되거나/etc/bash.bashrc
포함됩니다.
#rmm delete
alias rmm=trash
alias rl='ls -a $HOME/.trash'
trash()
{
trash_path="$HOME/.trash"
if [ ! -d $trash_path ]; then
mkdir -p $trash_path
fi
for i in $*; do
if [ "$i" == "-f" -o "$i" == "-rf" ] ;then
continue
fi
STAMP=`date +%Y%m%d-%H:%M:%S`
FileName=`basename $i`
mv $i $trash_path/$FileName"_"$STAMP
done
- 위 파일을 소싱하여 즉시 적용
- 정기적 인 청소 설정 (방법 1 참조)
사용 예
rm
: 이동 (삭제)rl
: 휴지통에 정보 표시
(1) 루트 ID
root@suer-virtual-machine:/etc# rmm /home/suer/test_dir4
root@suer-virtual-machine:/etc# rl
. test_dir2_20210127-10:42:49 test_dir4_20210127-14:24:36
.. test_dir3_20210127-10:46:24
(2) 일반 사용자 ID
suer@suer-virtual-machine:~$ rmm test_dir5
suer@suer-virtual-machine:~$ rl
. .. test_dir5_20210127-14:44:59
가능한 문제
- 재 로그인 또는 ID 전환 명령이 작동하지 않습니다.
참조 : linux 관련 : ubuntu가 .bashrc로 설정된 후 재 로그인이 작동하지 않음
당신은 기사가 도움이 될 수 있습니다 생각하거나 할 수 있다면 칭찬을 지적 , 어떤 지원 블로거.