¿Deshacer un comando "rm -rf ~"?


115

Tenía una carpeta que no quería que se llamara '~', así que desde la línea de comando escribí

rm -rf ~

y borré accidentalmente mi carpeta de inicio (ya que ~ se resolvió en / home / username). ¿Hay algún camino de regreso o necesito básicamente volver a crear la cuenta desde cero?


18
¿Qué sistema de archivos?
Tarnay Kálmán

66
Claramente, ustedes no tienen sentido del humor.
Blomkvist

21
Aunque esto no responde directamente a su pregunta, rm -rf "~"con comillas buscará ese nombre literal en lugar de expandirlo. Pero me daría miedo usar eso de todos modos: usaría algo como lso cdprimero para verificar que obtengo el directorio correcto o eliminar la carpeta de un administrador de archivos GUI. Quizás primero cambie el nombre del directorio ( mv "~" tilde), verifique y luego elimine.
Henrik N

2
Para el futuro, no use rm interactivamente en la línea de comando. Use una utilidad como basura y usted 1) no puede cometer el mismo error nuevamente y 2) no puede acostumbrarse a un pobre alias de shell de rm que le causará problemas.
Fred Nurk

99
@HenrikN: ./~ en lugar de "~" hace lo mismo, pero también funciona con otros nombres de archivo problemáticos comunes, como los que comienzan con guiones y parecen opciones.
Fred Nurk

Respuestas:


148

En general no hay un camino fácil de regreso.

Puede restaurar desde su copia de seguridad diaria.


194
Su comentario sobre las copias de seguridad es cruel y 100% al punto.
Benjamin Bannier

3
OS X establece la barra de cómo deberían funcionar las copias de seguridad (especialmente con Time Capsule). Consulte maketecheasier.com/… para obtener sugerencias sobre cómo obtener algo similar con Ubuntu.
Thorbjørn Ravn Andersen

44
@ Thorbjørn Ravn Andersen: lo hace, excepto cuando Time Machine tiene una crisis nerviosa. He tenido una máquina del tiempo que me asusta dos veces en seis meses.
Nombre falso

El respaldo externo es excelente y puede ser bastante asequible. Yo uso Backblaze (Mac / Windows) a $ 5 / computadora / mes. Parece que a muchas personas les gusta Crashplan (Mac / Windows / Linux).
Henrik N

23
diariamente que ????
Luc M

66

Otros (como @RiMMER , @Adam y @James T ) han mencionado que, para la mayoría de los sistemas de archivos, es posible recuperar la mayoría o la totalidad de sus datos (tal vez sin nombres de archivo), porque los datos no se reducen a cero, solo se eliminan de la tabla de archivos. Esto no es solo cierto para Linux: lo mismo es cierto para Windows y Mac.

Sin embargo, nadie ha mencionado lo más importante: APAGUE SU COMPUTADORA. AHORA. .

Muchos programas, incluido el navegador de Internet que está utilizando en este momento, almacenarán datos en la memoria caché en el disco duro, y casi cualquier cosa que haga puede hacer que su computadora cambie el tamaño / escriba en el archivo de intercambio. Ambas cosas escribirán en sectores libres en el disco duro, posiblemente sobrescribiendo sus valiosos datos.

Por lo tanto, apague su computadora, saque el disco duro y póngalo en otra computadora. Monte el disco duro como de solo lectura y recupere los archivos en un disco duro separado. Cuando haya recuperado todo lo que pueda interesar, y solo entonces, vuelva a escribir los archivos en la unidad original.


11
Incluso el proceso de apagado puede escribir en el disco duro. Estoy indeciso a recomendar inmediatamente de desconectar la computadora, ya que sin duda puede hacer cosas mucho peores, pero ... bueno, dependiendo de la importancia de los datos es, es posible que desee considerar.
BlueRaja - Danny Pflughoeft

1
Dependiendo de la unidad / OS / punto de montaje puede ser posible desmontar inmediatamente y / o volver a montar de sólo lectura en vivo sin necesidad de encender el PC apagado, después de apagar etc.
Mateo Scharley

1
killall rmen lugar de apagar
Fred Nurk

1
Dependiendo de cuán grande sea su directorio de inicio y cuán grande sea su disco duro, las posibilidades de sobrescribir los sectores libres que contienen sus datos son bastante escasas.
Mike Speed

Puede recuperar archivos de texto usando este método sin mucha dificultad (siempre y cuando tenga una idea aproximada de lo que hay en ellos), pero los archivos binarios son tan difíciles que básicamente son imposibles.
Satanicpuppy

13

Creo que cada usuario de Linux en un momento dado debe aprender esta dolorosa lección de primera mano antes de aprender la importancia de las copias de seguridad, así como prestar atención a los detalles y tener cuidado.

Por ejemplo, si está eliminando archivos de aspecto extraño, primero puede ejecutar comandos en ese archivo extraño que no tengan efectos secundarios y que no realicen cambios en sus datos. Por ejemplo, si hubieras corrido

cd ~

antes de intentar eliminar la carpeta, habría visto que en cambio cambiaría el directorio a su carpeta de inicio, no a la ~carpeta. Una vez que pasan a través suficientes pasos para solucionar problemas para aprender el comando cierto que tendría que correctamente cden la ~carpeta, a continuación, puede pulsar su tecla de flecha arriba para sacar el último comando de la historia y luego cambiar cda rmy entonces y sólo entonces tratar de eliminar la carpeta .

Sugiero tomar medidas como esta antes de realizar cualquier acción que sea permanente. No es permanente ni infalible, pero tiene muchas más posibilidades de prevenir esos momentos de Ups si toma este grado de cuidado al realizar acciones que tienen efectos secundarios.


44
Mira antes de saltar, y lsantes de ti rm.
LawrenceC

7

Si está utilizando el sistema de archivos ext3, ext3grep es su nuevo mejor amigo. Un buen tutorial (entre muchos otros) sobre el uso de ext3grep se puede encontrar aquí .


6

Puede intentar usar testdisk para recuperar archivos individuales . Aparentemente, esto solo funciona en ext2 y NTFS (pero aún así vale la pena intentarlo).

Si tiene ext3 o ext4, puede recuperar archivos conocidos usando photorec , que probablemente terminará recuperando más de lo que desea. Photorec recupera archivos sin la información del nombre de archivo, por lo que puede ser tedioso revisarlos.


4

Si tiene una unidad externa lo suficientemente grande, tiene otra opción posiblemente más segura. Necesitará suficiente espacio para almacenar toda la partición doméstica, incluido el espacio libre.

Arranque desde un CD y no monte la unidad de inicio en absoluto. Montar el disco externo. dd la partición de la unidad de inicio en un archivo en la unidad externa. monte el archivo como un dispositivo de bucle invertido y haga su trabajo de recuperación en esta imagen, sabiendo que no puede dañar su sistema de archivos original. Dependiendo del sistema de archivos, puede haber muchas cosas para probar, algunas de ellas potencialmente destructivas.

Esto me salvó una vez con una versión beta de Reiser4 cuando no sabía qué haría, incluso si lo montaba, solo lectura. Leí en alguna parte en el momento en que aún era posible escribir diarios.

También es una buena técnica para guardar datos de un disco agonizante.


1
+1 por mencionar que en la mayoría de los FS registrados, incluso un montaje de solo lectura puede escribir datos como parte de las actividades de la revista.
sleske

2

Existen técnicas para recuperar archivos mediante la inspección de los inodos que no se han reciclado. Cuantos más datos escriba en el sistema de archivos después de la eliminación, es menos probable que recupere sus datos. La mejor estrategia para recuperarse de una eliminación accidental de datos es restaurar desde una copia de seguridad.


2
alias rm="rm -i"

Suponiendo que está utilizando el shell Bash (ponga esto en su archivo .bashrc para que persista en los nuevos shells que abra).

Esto debería hacer que rm le pida que confirme lo que desea eliminar, lo cual es bueno especialmente cuando está haciendo -rf, pero también expandirá '~' a la ruta completa a su directorio de inicio en el indicador, lo que debería darle una pista de que no estás borrando un archivo '~' sino tu homedir.

$ rm -rf ~
rm: examine files in directory /nas/users/u12345/unix (yes/no)? n

Esto no es técnicamente una respuesta a su pregunta, pero podría ayudarlo a evitar ese problema en el futuro.

EDITAR: Algunas personas pueden desanimarlo de usar esta técnica, ya que lo hace menos cuidadoso con el comando "rm". En mi experiencia, esto está lejos de la verdad. En realidad, el efecto del alias es desalentarlo de usar "rm -rf", ya que sabe que dará lugar a muchas indicaciones que no desea responder, y para obtener un "rm -rf sin aviso" "debe referirse deliberadamente al comando rm como / bin / rm (o lo que sea). Esto lleva a un uso mucho más consciente y deliberado del comando "rm" en general, ya que siempre debe preceder el uso de rm con una elección mental de "rm o / bin / rm", tanto en su servidor como en cualquier otro que ocurra para iniciar sesión en. ¡Y un mundo donde todos pensaron antes de usar rm sería realmente más seguro!


2
Depende del sistema en el que estés. En RHEL5 y OS X 10.6 al menos, -fanula la -iopción.
Daniel Beck

No sabía eso. Añado mi consejo con YMMV y "¡no intentes esto en casa, o probablemente más importante en el trabajo"!
aaa90210

99
Si hace esto, algún día no tendrá este alias en su lugar, tal vez esté sentado en otra computadora o haya ingresado en algún lugar, y usará rm para la red de seguridad. Harás algo de lo que te arrepientas.
Fred Nurk

1
@FredNurk Exactamente. La mejor opción es agregar el -i usted mismo, o simplemente no usar la opción -f.
Arda Xi

Cuando tengo muchos archivos para eliminar, empiezo con rm -i my_list_of_files. Luego uso CTRL-C y recuerdo mi comando para modificarlo arm -rvf my_list_of_files
Luc M

2

Lamento tus datos. Todos los demás han intervenido sobre cómo lidiar con su problema de datos, pero aquí hay información sobre cómo puede lidiar con la próxima vez que vea una carpeta almacenada ~.

  1. Encuentra a quien lo creó y asegúrate de que nunca lo vuelvan a hacer.
  2. No use -rfni ningún argumento poderoso para hacer la eliminación. En lugar de eso, tómalo bien y despacio y asegúrate de que puedes ver lo que está sucediendo. Es posible ingresar al tilde sin que se expanda a su directorio de inicio escapándolo en el shell. En teoría podría rm -rI \~ , sin embargo, puede ir un paso más allá.
    1. Primero, cd \~para ENTRAR en esa carpeta, tal vez incluso use pwdpara verificar que haya llegado allí. Diez eliminar su contenido mientras estás allí. Una vez más, tenga cuidado, pero limpie la carpeta con rf -rI *y si necesita hacerlo .*también.
    2. Ahora retroceda con cd ..y elimine el directorio con rmdir \~.

1

Acabo de cd .snapshot y restauro los archivos. Pero hago esto en el trabajo y no tengo idea de dónde proviene el directorio .snapshot. Pensé que tal vez era una característica de Linux.


1

Herramientas de recuperación - Línea de comando:

Herramientas de recuperación - Gui:

Informaciones:

En mi experiencia personal, recupero mis datos usando "UFS Explorer" y photorec

(1) = No es de código abierto, no es gratis

(2) = No es de código abierto, gratis

(3) = Código abierto y gratuito

(4) = Tener soporte ntfs

(5) = Tiene función de estructura de directorio


-3

rm es para siempre.

Aunque esto no lo ayuda ahora, en el futuro podría no usar rm o realmente forzarse, agregar un script encontrado anteriormente en su ruta llamado rm que mueve los archivos a una carpeta de basura que limpia en otro momento (permitiendo cometer errores y no ser SOL).


77
El único problema con esto es que puede volverse un poco rápido y flojo con el comando rm y olvidarse de que no tiene la práctica funcionalidad de recuperación en el servidor Linux de su empresa ... oops ...
jmort253

2
-1 Esto tiene el mismo problema que las respuestas con voto negativo (por lo que robaré el comentario de otra persona): un día no tengo este script en su lugar, tal vez estás sentado en otra computadora o te has metido en algún lado, y usarás rm para la red de seguridad y harás algo que lamentes.
DMA57361

@Corey Aunque estoy de acuerdo en que esto podría causar un mal habito, +1 porque esta respuesta ha sido muy rechazada
John Militer
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.