Linux 휴지통 명령 실행 취소


24

터미널에서 수행 한 작업 (예 : 파일 삭제)을 취소 할 수 있습니까 rm?

얻은 솔루션 :

  1. 앨리어싱
  2. 삭제 취소 유틸리티
  3. 백업 유틸리티
  4. LibTrash
  5. 버전 관리 (FUSE)

1
On rm: 파일을에서 연결을 해제 합니다 inode. 질문 : " rm명령이 실행될 때 파일이 어디로 이동합니까 "-> unix.stackexchange.com/questions/10883/… 도 잘 읽어 볼 수 있습니다.
erch

답변:


62

터미널의 모든 작업에 대한 일반적인 "실행 취소"는 없습니다. 사용 후 파일을 복구 rm하려면 복구 소프트웨어를 조사해야합니다.

향후 실수를 방지하기위한 옵션 alias은 대체 명령을 사용하여 파일을 제거하는 것입니다. 당신에게 그것들을 추가하고 ~/.bashrc대신에 그것들을 사용하는 습관을들이십시오 rm.

  1. 별명 rmi = 'rm -i'

    를 사용 rmi하면 향후 삭제 확인 메시지가 표시됩니다. 명령을 y내린 후 즉시 누르는 습관을 들이지 마십시오 rmi. 목적을 위반할 수 있습니다.

  2. trsh터미널 의 명령으로 삭제 한 파일을 휴지통 (KDE 및 Gnome)으로 이동할 수도 있습니다 .

    alias trsh='mv --target-directory="$HOME/.Trash"'
    

    을 사용 trsh하면 "삭제 취소"기능이 제한됩니다. 조심해

    trsh dir1/file1 dir2/file1
    

    여전히 복구 할 수없는 데이터 손실이 발생할 수 있습니다.


3
내 것보다 훨씬 더 나은 답변에 +1 =)
How-To Geek

9
두 번째 별칭은 매우 똑똑합니다. +1.
LiraNuna

3
trash () {mv $ @ ~ /. 휴지통; } # bash 함수, 별칭이 아닙니다. rm의 예상되는 동작을 변경하는 것은 나쁜 생각입니다 (IMHO).
Richard Hoskins

20
앨리어싱과 위험 rm으로는 rm -i당신을 준다 당신은 안전 그물에 익숙해 있다는 점이다. 그런 다음 별칭이없는 다른 컴퓨터로 이동합니다.
Dentrasi

3
Richard와 Dentrasi가 언급 한 이유 때문에 사용자 정의 함수를 작성하거나 alias- rmi> 를 선호합니다 rm -i. 기존 프로그램의 별칭을 통해 기존 프로그램을 방해하는 것은 실제로 실수입니다.
Telemachus

6

명령 행에 휴지통이 없습니다.

다양한 삭제 취소 유틸리티 중 일부를 시도해 볼 수 있지만 작동하지 않을 수도 있습니다.


예, 명령 행에 휴지통이 있습니다. 다른 답변에서 trash-cli를 참조하십시오.
Sparhawk

Trash-cli는 너무 좋습니다 :) 파일을 이동하는 것보다 Trashlib을 사용합니다.
m3nda

5

당신이 사용할 수있는 쓰레기-CLI를 당신이 GUI를 실행할 때 KDE를 사용하는 경우. KDE 휴지통 기능을 사용하여 삭제 / 복원하기위한 명령 줄 유틸리티입니다.


1
trash-cli는 GNOME 휴지통과도 작동하며 rm 옵션 호환성 (별칭 지정)을 제공하도록 설계되었습니다.
Andrea Francia

alias rm=trash일반적인 명령 줄 나사 조임에는 실행 취소 버튼 이 포함 되어 있어야합니다.
라이언 C. 톰슨

언젠가 alias rm=trash다른 사람의 시스템을 사용하고 잊어 버리거나 ssh 할 가능성이 있다면 잠재적으로 위험 하다고 생각 합니다. trash대신 글쓰기에 익숙해지는 것이 훨씬 안전합니다 rm.
Sparhawk

4

명령 rm의 별명을 작성할 수 있습니다 trash( trash먼저 설치해야 합니다).~/.bashrc .

alias rm='trash'

이것은 바람직하다 alias rm='mv --target-directory=$HOME/.Trash' ~ / .Trash 그놈의 휴지통 폴더 NOT 때문이다. trash실제 휴지통 폴더의 위치를 ​​파악하는 것이 좋습니다 .

btw 나는 이것을 의견에 게시했지만 충분한 담당자가 없습니다.


5
"~ / .Trash는 그놈의 휴지통이 아닙니다." 그러나 rm은 휴지통으로 별칭을 지정해서는 안됩니다. 원하는 경우 rm 대신 휴지통을 사용해야합니다.
nagul

그러나 일부 사람들에게는 오래된 습관이 열심히 죽습니다.
Alvin Row

'rmtrash'는 다른 옵션입니다.
Itachi

3

두 가지 기술 솔루션은 아직 명명되지 않았습니다.

  1. 쓰레기 : 쉘에서 미리로드 할 수있는 동적 라이브러리는 삭제 / 제거 syscall을 가로 채고 파일을 휴지통 폴더로 대신 이동합니다 (별칭과 유사하지만 미리로드 할 때 모든 응용 프로그램에서 작동).
  2. 버전 관리 파일 시스템. 파일을 삭제 (또는 편집, 복사 또는 ...)하면 이전 상태로 되돌릴 수 있습니다. 이것은 FUSE 파일 시스템과 그 버전 관리 파일 시스템 중 하나를 사용하여 수행 할 수 있습니다 .

3

여기서 다루어야 할 더 큰 질문이 있습니다. 쉘 명령은 수다스럽지 않으며 (원하는 것을 다시 확인하지 않음) 수행중인 작업을 알기를 기대합니다. 이것은 그들이 어떻게 설계 되었는지에 대한 기초 입니다 . 버그가 아닌 기능입니다.

어떤 사람들은 그러한 명령을 사용할 때 사나운 느낌이 들지만, 나는 어리석은 생각하지만 위험을 이해하는 것이 중요합니다. 루트가 아니더라도 터미널에서 많은 피해를 줄 수 있습니다. 아마도 당신은 아마 정말로 신경을 쓰고 있다고 생각 rm하지만, "터미널에서 수행 된 작업을 취소 할 수 있습니까?"라고 말했기 때문에 이것이 가치가 있다고 생각했습니다. 일반적인 대답은 '아니요'입니다.


2

옵션 1 : ext2 파일 시스템에서 Linux 파일 삭제 취소를 참조하십시오 . 이 페이지는 LunetIX 회사의 Sebastian Hetze가 작성한 프로그램으로 ext2 파일 시스템에서 최근에 삭제 된 파일을 삭제 취소하는 프로그램을 가리 킵니다. 사용법 예 :

# undelete -d /dev/hdc3 -a 10

경고 :

  • 원래 웹 사이트가 사라졌습니다. 위의 링크는 인터넷 아카이브에 대한 링크입니다.
  • 이 사이트는 영어와 독일어가 혼합되어 있습니다.
  • 위에서 언급했듯이이 도구는 ext2 파일 시스템을 위해 특별히 설계되었습니다. 다른 파일 시스템 유형에서는 작동하지 않을 수 있습니다. 특히 ext N 이외의 것은 아닙니다 .

옵션 2 : 컴퓨터에서 rsnapshot (rsync)을 실행하여 선택한 폴더의 시간당 스냅 샷을 만듭니다. 매시간, 2 시간마다 또는 CRON에 지시 한 모든 것을 점진적으로 수행합니다. 하루 종일이 스냅 샷을 매일 하나의 스냅 샷으로 재활용하고 일주일에 7 일 등으로 재활용합니다. 이렇게하면 매 시간마다 약 한 달 정도 시간을 되돌릴 수 있습니다! 그것은 결코 바뀌지 않은 파일에 대한 심볼릭 링크를 생성하기 때문에 디스크 공간에 꽤 좋습니다 ...


명확히하기 위해 # 1은 ext2 파일 시스템에만 해당됩니다. ext3 파일 시스템에서는 작동하지 않습니다.
nagul


1

ext2에 대한 삭제 취소 유틸리티가 있지만 대부분의 다른 Linux 파일 시스템은 석기 시대에 갇혀 있으며 고급 사용성 기능이 없습니다. 파일을 다시 삭제하기에 충분한 공간이있는 거대한 드라이브를 고려하는 슬픈 상황은 흔한 일입니다.

따라서 세 가지 옵션이 있습니다.

  1. 예를 들어 다음과 같은 명령을 사용하여 정기적으로 백업하십시오.

    rsync -axvRP --backup --backupdir=/backup/incr/$(date -I) /home/ /backup/root/

  2. git모든 작업 과 같은 버전 관리 도구를 사용하십시오 . 이것은 rm -r저장소를 죽이는 미친 으로부터 보호 git rm하지는 않지만 원시가 아닌을 사용할 때 정기적 인 문제로부터 보호 rm합니다.

  3. 여분의주의와 너무 많이 신뢰하지 않는 rm -i, trash-cli친구, 대부분의 데이터로 당신은 쉘에 잃게됩니다 당신은하지 잃게 실수로 rm하지만, 잘못 배달 파이프, 잘못 입력 출력 파일, 잘못 전달에 의해 mv물건, 즉, 덮어 쓰게됩니다 것들 데이터를 삭제하는 것이 아니라

최대한의 안전을 위해 세 가지를 모두 수행하십시오.


ext2를 현대적으로 부르는 것은 꽤 재밌습니다. 최신 파일 시스템은 ext2 / 3보다 더 복잡한 온 디스크 형식을 사용하므로 삭제하지 않을 파일을 찾을 수있는 찾기 쉬운 위치를 포기해야했습니다. 그들은 관심있는 것을 백업하는 사람들을 위해 설계되었습니다. BTW, 나는 항상 mv와 cp -i를 사용한다. 왜냐하면 나는 일반적으로 아무것도 클로버하기를 원하지 않기 때문이다. rm -i에 대한 별칭이 rm이기 때문에 일반적으로 \ rm을 입력하지만 질문에 대답하고 싶지 않습니다.
Peter Cordes

0

이것을 확인하십시오 ... 도움이 될 것입니다 http://artmees.github.io/rm/

당신이했다고 가정

rm very_important_file

터미널에서. 이 파일을 복구하는 것은 지루하고 항상 성공적인 프로세스는 아닙니다

대신 언급 한 스크립트를 사용한 경우. 걱정할 필요가 없기 때문에

rm very_important_file
mv very_important_file ~/.Trash/

동일합니다. 스크립트는 더 많은 경우를 처리하고 시스템을 변경하지 않습니다rm 을 전혀 사용자 로컬 bin 폴더에 저장되어 시스템 rm을 숨기고 영향을 미치거나 사용하지 않기 때문에

이것은 세련된 앨리어싱 접근법이지만 기능을 잃지 않습니다.


1
이것이하는 일과 그것이 질문에 어떻게 적용되는지에 대한 설명을 추가 할 수 있다면 좋을 것입니다. 예를 들어 추가 할 수도 있습니다.
slhck


0

나를 위해 (opensuse leap 42.2, NTFS pendrive) PhotoRec 는 또한 testdisk작성자에 의해 작동했습니다 :) 그러나 파일 이름을 복구하지 못했습니다.

PhotoRec는 하드 디스크, CD-ROM의 비디오, 문서 및 아카이브를 포함한 손실 된 파일과 디지털 카메라 메모리에서 손실 된 사진 (따라서 사진 복구 이름)을 복구하도록 설계된 파일 데이터 복구 소프트웨어입니다. PhotoRec는 파일 시스템을 무시하고 기본 데이터를 따르므로 미디어의 파일 시스템이 심각하게 손상되거나 다시 포맷 된 경우에도 계속 작동합니다.

openSUSE에서 표준 리포지토리를 사용하여 설치했습니다.

교수


1
슈퍼 유저에 오신 것을 환영합니다! 읽어 보시기 바랍니다 소프트웨어 권장하는 방법 에 대한 최소한의 필요한 정보를 슈퍼 사용자에 소프트웨어를 추천하는 방법과 제안을. 제공된 링크가 깨져도 답변을 유용하게 유지하려면 이러한 세부 정보를 답변으로 편집해야합니다.
나는 복귀 모니카
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.