Foros del Web » Administración de Sistemas » Unix / Linux »

una mano con un bash

Estas en el tema de una mano con un bash en el foro de Unix / Linux en Foros del Web. Buenas a todos!! Estoy programando un bash que me debe comprimir una a una las carpetas de un directorio X. El problema lo tengo a ...
  #1 (permalink)  
Antiguo 29/05/2008, 05:17
 
Fecha de Ingreso: septiembre-2007
Mensajes: 68
Antigüedad: 17 años, 2 meses
Puntos: 0
una mano con un bash

Buenas a todos!!

Estoy programando un bash que me debe comprimir una a una las carpetas de un directorio X.

El problema lo tengo a la hora de saber cual es el nombre de la carpeta para tratarlo. Os dejo el codigo de lo que tengo.

Código:
#!/bin/bash

#accede a la carpeta
cd /home/gerard/proyectos

#obtiene listado y almacenamiento en un fichero
ls -l > /home/gerard/listado

#bucle para ir comprimiendo
?¿ no se como obtener los elementos del listado

tar -zcvf elementoX.tgz elementoX
Gracias y saludos
  #2 (permalink)  
Antiguo 29/05/2008, 07:39
Avatar de Max13  
Fecha de Ingreso: octubre-2000
Ubicación: Mx
Mensajes: 1.229
Antigüedad: 24 años
Puntos: 0
Respuesta: una mano con un bash

Para empezar puedes sacar el listado de directorios con "ls -d */" esto te da el listado solo de los directorios.

No tengo una consola a la mano por lo cual esto pude no ser exacto, pero creo que tu bucle quedaría así:

for i in `ls -d */`;do
tar -czf $i.tgz $i
done
  #3 (permalink)  
Antiguo 29/05/2008, 08:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 68
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: una mano con un bash

hola Max13 estube buscando más información y encontre esta página con la que mas o menos he encontrado una solución aunque de todos modos revisare un poco más a fondo tu solución para ver si es más optimizada

el link -> http://albertjh.cymaho.com/?p=363
  #4 (permalink)  
Antiguo 29/05/2008, 08:44
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 4 meses
Puntos: 29
Respuesta: una mano con un bash

Yo lo haría mas facil, a ver si te funciona.

Cita:
find . | xargs tar -cvf archivo.tar
Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #5 (permalink)  
Antiguo 29/05/2008, 08:48
 
Fecha de Ingreso: septiembre-2007
Mensajes: 68
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: una mano con un bash

el problema es que no se que nombre me va a devolver para asignarselo al archivo .tgz
  #6 (permalink)  
Antiguo 29/05/2008, 08:50
Avatar de Koveart
Colaborador
 
Fecha de Ingreso: julio-2002
Ubicación: Colombia
Mensajes: 4.407
Antigüedad: 22 años, 4 meses
Puntos: 29
Respuesta: una mano con un bash

La verdad no entiendo de donde quieres obtener el nombre para dárselo al paquete tar. Porque con un ls se tendrían muchos nombres. ¿Es una especie de tar recursivo en diferentes carpetas con diferentes nombres?

Saludos
__________________
“Los soñadores no existen, se lo dice un soñador que ha tenido el privilegio de ver realidades que ni siquiera fue capaz de soñar”
  #7 (permalink)  
Antiguo 29/05/2008, 08:56
 
Fecha de Ingreso: septiembre-2007
Mensajes: 68
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: una mano con un bash

en verdad es un repositorio que tengo y que quiero ir haciendo copias de seguridad. de ahi que quiera conservar el nombre del directorio original.

por otro lado tu sistema entiendo que solo genera un unico archivo que esta bien porque agrupa todo pero:
1.- en este caso sera brutal, tal y como tengo ahora mismo comprimido son 6gb lo que ocupa.
2.- si solo me interesara recuperar o llevar un unico directorio con tu mecanismo me obligaria a transportar todo

gracias koveart por ese sistema y aunq hoy a mi no me sirve puede que en otro momento o otras personas les pueda servir.

un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:10.