시스템에서 최근 삭제된 모든 파일을 나열할 수 있는 UNIX 명령이 있습니까?

시스템에서 최근 삭제된 모든 파일을 나열할 수 있는 UNIX 명령이 있습니까?

예기치 않게 rm -rf현재 디렉터리가 아닌 내 루트 디렉터리에서 명령이 실행되었습니다. Ctrl+를 눌러 파일을 삭제 했는데 C일부 파일이 삭제되었습니다. 영향을 받는 응용 프로그램을 가져오기 위해 시스템에서 최근 삭제된 모든 파일을 나열할 수 있는 LINUX 명령이 있습니까?

운영 체제: CentOS 6.3

답변1

*nix 시스템에는 일반적으로 locate유틸리티가 설치되어 있습니다. 여기에는 시스템에 있는 (거의) 모든 파일의 이름이 포함된 데이터베이스가 있으며 일반적으로 밤마다 업데이트됩니다. 빨리 달려:

locate /path/to/dir/of/interest

마지막 데이터베이스 업데이트 당시 디렉터리에 있는 파일 목록이 표시되어야 합니다. 현재 목록과 비교할 수 있습니다.

새 버전이 자동으로 덮어쓰므로 이제 데이터베이스의 백업 복사본을 만들 수 있습니다. Debian에 영향을 받는 시스템에서는 /var/lib/mlocate/mlocate.db.

손실된 파일을 표시하는 방법

  1. 이전 데이터베이스를 백업합니다.

    cp /var/lib/mlocate/mlocate.db ~/old.db
    
  2. 데이터베이스를 업데이트하십시오. 이를 수행하는 명령은 다를 수 있습니다. 데비안과 같은 시스템에서는 다음을 시도해 보세요:

    sudo /etc/cron.daily/mlocate
    
  3. 디렉터리의 이전 파일과 새 파일 목록을 가져옵니다.

    locate -d ~/old.db /your/dir | sort >~/old.list
    locate /your/dir | sort >~/new.list
    
  4. 모든 새 파일과 누락된 파일 목록을 가져옵니다.

    diff ~/old.list ~/new.list
    

보충 설명

  • 모든 파일이 위치 찾기 데이터베이스에 나열되는 것은 아닙니다. 구성 파일은 일반적으로 /etc/updatedb.conf제외되는 파일과 디렉터리를 결정합니다.

  • locate나는 과거에 기본적으로 아직 존재하는 파일만 나열하는 버전을 사용했습니다 . 이러한 경우에는 locate이 기능을 꺼야 합니다.

답변2

아치의 경우, xargs rm -rf 명령 형식으로 잘못된 파일을 실수로 많이 삭제한 것이 걱정됩니다. John1024 조언 감사드립니다.

모든 것을 단순화하기 위해(내 웹 디렉터리 /srv/http의 경우) 모든 것을 한 줄로 실행합니다.

sudo cp /var/lib/mlocate/mlocate.db ~/old.db; sudo updatedb; sudo locate -d ~/old.db /srv/http | sort >~/old.list; sudo locate /srv/http | sort >~/new.list; sudo diff ~/old.list ~/new.list;

/srv/http를 관심 있는 디렉터리로 바꾸십시오.

그러면 변경된 파일이 표시됩니다. 다시 한 번 감사드립니다!

관련 정보