Mie Dic 05, 2007 4:12 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
| Recuperación de archivos |
|
|
Creo que por error borré un archivo en Linux... (equipo Solaris) ¿algún comando para ver la papelera de reciclaje? ( ) si es que existe algo así... ¿¿ideas?? ¿¿cómo recuperar con algún comando?? |
|
|
|
Mie Dic 05, 2007 4:32 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 474
Ubicación: Frente al monitor
|
|
|
|
|
si no has hecho backup... estás muerto.
Con rm archivo no hay solución. |
|

Mie Dic 05, 2007 4:40 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4008
Ubicación: Valladolid, España
|
|
|
|
|
Si lo hiciste desde el gestor de ficheros de Gnome o KDE, sí hay una papelera (icono de). Pulsando sobre ella deberían aparecer los ficheros recientemente borrados.
En cambio, si lo has hecho con 'rm' o con algún programa que llamase a la función del sistema correspondiente, no, no es posible recuperarlo.
Bueno... en teoría... se podría hacer... deberías apagar el ordenador tirando del cable del enchufe nada más haber hecho el borrado. Luego sacas el disco duro y se lo llevas a otro ordenador, o arrancas el ordenador con otro sistema que no sea el del propio disco duro. Con herramientas que miran los sectores de los discos, si te acuerdas de parte del contenido del fichero, podrías localizar alguno de esos sectores.
En las empresas especializadas en recuperación de datos, podrían incluso recuperarte el fichero entero, pero depende del tiempo (segundos) que pasase entre el momento en que lo borraste y apagaste el ordenador. Si ha pasado uno o dos minutos, casi seguro que no es recuperable. |
|

Jue Dic 06, 2007 5:38 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
Antes que nada sugiero se ponga en Emoticons, una carita llorando o una carita así toda desesperada.
Segundo, pues ahora si ya me cargo la "$!"%!#%
Por error borré un archivo, y ya no hay forma de recuperarlo, así que será un laaaaaaaaaargo laaaaaaaaargo mes, para buscar esa información en algún otro equipo de los 54 que hay aquí... en fin. |
|

Vie Dic 07, 2007 10:38 am
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
Saludos, Perleros. Quiero saber su opinión. Tengo un programa X.ksh, el cual se ejecuta cada día, para el cual contiene lo siguiente:
| bash: | . $HOME/.profile
export COLECTORHOME=/export/home/colljvip/LatJitterLan_thread
export AYER=`date '+%y:%m:%d' | awk -F":" '{printf"20%2d%2d%2d\n",$1,$2,($3-1)}' | sed 's/ /0/g'`;
export prefix=pruebas_latencia
cd ${COLECTORHOME}/historico/data
echo ${AYER}0
gzip ${prefix}${AYER}0* |
Mi problema radica en la forma en la que toma la fecha, ya que con el código actual no respeta el día 31 (no da por hecho que ese día exista), por lo que yo opté por usar un programa en Perl, el cual me da la fecha, y quedó así:
| bash: | export COLECTORHOME=/export/home/colljvip/LatJitterLan_thread
AYER=`perl fecha.pl`
export prefix=pruebas_latencia
cd ${COLECTORHOME}/historico/temporal
echo ${AYER}0
gzip ${prefix}${AYER}0* |
La cosa es que si yo ejecuto el programa manualmente, funciona, pero si lo dejo corriendo en el cron, para que lo haga, es cuando falla. ¿Alguna sugerencia para cambiar esa fecha y no utilizar un programa en Perl? ¿o creen que el problema sea por que me falto definir la ruta del archivo *.pl? (No creo, puesto que todos los programas están dentro de la misma carpeta) ¿o que opinan?
Saludos |
|


Vie Dic 07, 2007 12:35 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
¡Rayos!, sabía que era eso... ok, hoy lo checo y mañana confirmo que se ejecutó correctamente...
Gracias. |
|
Lun Dic 10, 2007 12:15 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4008
Ubicación: Valladolid, España
|
|
|
|

Lun Dic 10, 2007 12:38 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
mmmm deja lo mastico, por que al parecer eso es para cuando tienes las lineas, pero bueno comentando ya resolví el problema y es que en mi archivo, *.dat al final del mismo yo ingresaba coomit, de esta forma. para que automaticamente ingresaran las lineas que queria, pues solo era cosa de que al final tambien le pusiera el exit, y todos felices y contentos
asi quedo el archivo *.dat
| Código: |
Insert into FINAL_PLV (fecha, idcid, disponibilidad, latencia, perdida_paq, jitter_avg, disponibilidad_remoto, throughput, clase) values(to_date('20071209233802','YYYYMMDDHH24MISS'),82935,1,20.3,0,1,1,0,1);
commit;
exit
|
y asi quedo el *.Sh
| Código: |
echo abrir base de datos
sqlplus load/neopn2007@dnop @$FECHAAYER.dat
echo termino
|
Interesante la cosa, y sigo buscando como poner el enter, jejeje como dato curioso,,,
saludos. |
|

Mar Dic 11, 2007 12:40 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
La verdad que pena pero ando algo norteado. Primero que nada ¿alguien me podría recomendar un curso de comandos Linux? Referentes a redireccionamiento de archivos y comandos. Lo que pasa es que he tenido problemas al momento de ejecutar archivos e instrucciones. Por ejemplo, yo tengo mi archivo hola.sh y en otros equipos basta con teclear hola.sh y funciona pero en este equipo tengo que poner ./hola.sh.
¿Cómo puedo hacer lo mismo? Sé que es algo relacionado con el PATH pero no sé bien qué onda? Si me recomiendan algún articulo se los agradeceré,  |
|

Mar Dic 11, 2007 1:57 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4008
Ubicación: Valladolid, España
|
|
|
|
|
No es un problema de Linux, sino del shell que estás usando.
Tienes razón que es algo relacionado con la variable $PATH. Cuando tu mandas ejecutar algo, el shell busca el comando en el lugar del sistema de ficheros que se le indique. Por ejemplo:
/home/kiloko/bin/scripts/hola.sh
Si no le indicamos una ruta, el shell tendrá que buscarlo. Primero, mira a ver si es un comando interno suyo. Si no lo es, entonces se trata de un comando que debe estar en algún lugar del sistema de ficheros.
Para saber en qué directorio se puede encontrar ese comando, el shell usa la variable $PATH.
Si, por ejemplo, la variable $PATH contiene /bin:/usr/bin:/usr/local/bin entonces el shell mirará en cada uno de esos directorios intentando encontrarlo.
Si no lo encuentra, entonces informa de un posible error.
En tu primer caso, hola.sh sí que se encuentra en alguno de los caminos indicados por $PATH. En el segundo caso, como no lo encuentra, le estás indicando un camino (relativo) al lugar donde está (en este caso, el mismo directorio de trabajo).
Cuando uno tiene que hacer programas, puede ser muy aburrido tener que escribir el './' siempre delante de cada comando. Hay dos soluciones, pero pasan por la misma tarea: modificar la variable $PATH en el momento del arranque.
La modificación se puede realizar en alguno de los ficheros que el shell lee en el momento del arranque. En los Linux más modernos, se realiza en el fichero global /etc/profile. Ejemplo: en mi OpenSuse 10.3, un extracto de ese fichero es:
| bash: | #
# Make path more comfortable
#
if test -z "$PROFILEREAD" ; then
PATH=/usr/local/bin:/usr/bin:/bin
if test "$HOME" != "/" ; then
for dir in $HOME/bin/$CPU $HOME/bin ; do
test -d $dir && PATH=$dir:$PATH
done
fi
if test "$UID" = 0 ; then
test -d /opt/kde3/sbin && PATH=/opt/kde3/sbin:$PATH
PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH
fi
for dir in /usr/X11/bin \
/usr/bin/X11 \
/usr/X11R6/bin \
/var/lib/dosemu \
/usr/games \
/opt/bin \
/opt/kde3/bin \
/opt/kde2/bin \
/opt/kde/bin \
/usr/openwin/bin \
/opt/cross/bin
do
test -d $dir && PATH=$PATH:$dir
done
unset dir
export PATH
fi | Notar las siguientes cosas:
* Se usa una variable global llamada $PROFILEREAD para saber si este fichero ya lo hemos ejecutado o no (resulta que durante diez años, los shell ejecutaban varias veces este mismo fichero, por... una historia... que es mejor olvidar...)
* Vale, si es la primera vez que lo ejecutamos, inicializa la variable a un valor estándar.
* Si la variable $HOME está puesta (lo que suele querer decir que este fichero está siendo ejecutado por un shell arrancado a su vez por un proceso login por parte de un usuario -real-), entonces hace un bucle mirando a ver si ese usuario tiene un par directorios llamados bin/$CPU y bin/. Si los tiene, los agrega a $PATH.
* El resto de las líneas van añadiendo directorios más o menos estándares, en caso de que existan en el sistema.
* Finalmente, exporta la variable, para que sea conocida en los procesos que se ejecutarán más tarde.
Aquí has visto que, con que el usuario ya tenga un subdirectorio llamado bin/, el $PATH cambia para agregarle, así que la consecuencia es que solo tendríamos que meter nuestros programas dentro de ese directorio y ya está. Y esta es la solución más aconsejable.
Pero claro... muchas veces estamos haciendo programas que NO están NI estarán guardados en el bin/ del usuario, así que muchas veces tenemos que ejecutar comandos que están en el mismo directorio donde les estamos creando. Y escribir './' es muy aburrido.
Bien, pues hay que modificar $PATH para que agregue el directorio actual -en donde estemos en ese momento- a la lista de "caminos a ejecutables".
(Lo siguiente es un rollo. Saltar los dos próximos párrafos)
Esto se suele hacer ya en alguno de los ficheros propios del usuario, por temas de seguridad que luego comentaré. Si se usa el Bash Shell, se suele hacer en alguno de los ficheros que se ejecutan en el arranque de login del usuario. Podría ser ~/.profile o ~/.bashrc. Según el manual, el primero se ejecuta en el momento del login del usuario, mientras que el segundo se ejecuta cuando se ejecuta un shell interactivo (sí, hay ocasiones que un usuario puede entrar en un sistema y no hacer una sesión interactiva).
En mi OpenSuse 10.3, ~/.profile, básicamente lo único que hace es comprobar que /etc/profile se haya ejecutado. Sino es así, lo ejecutamos de todas formas:
| bash: | test -z "$PROFILEREAD" && . /etc/profile |
mientras que ~/.bashrc contiene un texto que indica que este fichero será ejecutado desde el /etc/profile, por lo que todo que pongamos en ~/.bashrc será ejecutado tanto en sesiones interactivas, como en sesiones normales o incluso si solo se hace login.
Bueno, pues entonces editamos ~/.bashrc y agregamos una línea como esta:
| bash: | export PATH="$PATH:." |
que quiere decir que a la variable $PATH le añadimos el directorio actual ('.'), sea el que sea en ese momento y siempre que ejecutemos un comando.
Con este cambio, ya no tenemos que escribir './' para ejecutar los comandos del propio directorio.
Todo esto está bien... pero tiene un lado perverso. Si nuestra máquina está segura (y nadie va a entrar a tocar las narices), podemos seguir así. El problema es el siguiente: si en lugar de definir la variable $PATH como antes, si no así:
| bash: | export PATH=".:$PATH" |
(es decir: damos preferencia de búsqueda a los comandos que están en nuestro directorio ANTES que en ningún otro), entonces, si un día, alguien -hacker o no- consigue entrar en el sistema, podría colocar un ejecutable -un malware-, con un nombre muy conocido, en alguno de los directorios de algún usuario o del propio root -según los permisos que consiga escalar-. Ejemplo: instala un troyano, con el nombre 'ls' y lo deja en tu carpeta raíz.
Como ejecutar 'ls' es algo muy normal, lo vas a hacer y, como el $PATH fue modificado para tener en cuenta el propio directorio en donde estemos, lo que hará el shell será ejecutar el troyano.
Lo mejor, entonces, es definir $PATH como se ha indicado antes, con el '.' al final, porque entonces el shell ejecutará el 'ls' del sistema antes que el de tu directorio.
De todas formas, mientras que esto es una modificación muy normal para un usuario, no es nada aconsejable para los root. Y en el caso de usarlo un usuario, que no se le ocurra crear programas que tengan el mismo nombre que los comandos básicos del sistema. El lío puede ser tremendo (con la ulterior posible pérdida de información).
Son 0.20€.
Ultima edición por explorer el Mar Dic 11, 2007 6:06 pm, editado 1 vez |
|

Mar Dic 11, 2007 2:46 pm
|
 |
Kiloko
Perlero Adicto

|
Registrado: 10 Jul 2007
Mensajes: 244
Ubicación: MOnterrey NL
|
|
|
|
|
Ok, yo solo esperaba una liga a un tutorial o algo, pero eso esta más que perfecto... mil gracias.. y por lo otro jajajajaja ahí anótalo a la cuenta.
Un saludo.
Confirmando entonces solo abria que ingresa
| Código: |
| PATH=$PATH:$HOME;. |
|
|
Powered by phpBB © 2001, 2005 phpBB Group
|