Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Comprimir Directorios
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Comprimir Directorios 
 
Hola.

Con la clase compres comprimo ficheros:

Dim compres as new Compress

Compres.type="zlib"
Compres.file(user.home & "/fichero.jpg",user.home & "/fichero.jpg.gz",Comprimir.max)

pero yo quiero comprimir un directorio.

Estoy haciendo un programa que debe comprimir un directorio y enviarlo por correo.

como puedo comprimir directorios?

gracias
 



 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprimir Directorios 
 
Hola

Lo puedes hacer tambien a través del comando SHELL si quieres:

PUBLIC SUB Button1_Click()
SHELL "tar czvf paquete.tgz directorio"
END


Saludos
 



 
abarzuaf - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprimir Directorios 
 
Con esto:

DIM directorio AS String
DIM fichero AS String
  
  fichero = "prueba.tgz"

  IF Dialog.SelectDirectory() THEN RETURN 'El usuario elige el directorio a comprimir.
  
  directorio = Dialog.Path 'cojo la ruta
  

  
  SHELL "tar czvf " & fichero & " " & directorio & " "

funciona, pero me comprime desde el directorio home todas las carpetas.

Osea: cuando descomprimo el fichero resultante sale primero la carpeta home, dentro la del usuario, dentro la del escritorio y luego la que eligio.
quiero que el archivo resultante sea el directorio elegido con lo que tiene dentro.

Supongo que debería sacar del dialog solo el nombre del directorio que eligió el usuario y no la ruta.
me estoy empezando a liar.

¿hay alguna manera de obtener el nombre del directorio seleccionado en el dialog?  se que del archivo es file.name(dialog.path)

algo como file.directorio(dialog.path)

gracias
 



 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprimir Directorios 
 
Hola

Prueba así:

PUBLIC SUB Button1_Click()
DIM directorio AS String
DIM fichero AS String
DIM cadena AS String
  
  fichero = "prueba.tgz"

  IF Dialog.SelectDirectory() THEN RETURN 'El usuario elige el directorio a comprimir.
  
  directorio = Dialog.Path 'cojo la ruta
  cadena = Mid$(directorio, RInStr(directorio, "/") + 1)


  
  SHELL "tar czvf " & fichero & " " & cadena & " "


END
 


Saludos
 



 
abarzuaf - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprimir Directorios 
 
me dice esto:

tar: prueba: No se puede stat: No existe el archivo o directorio
tar: Saliendo con fallos debido a errores anteriores

Crea el archivo prueba.tgz pero sin nada dentro.

El directorio que yo escojo tiene ficheros dentro.

Si que va a ser lioso esto de comprimir un directorio, con lo fácil que es comprimir un archivo.

gracias por todo.
 



 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprimir Directorios 
 
Hola.

Prueba agregando la función Trim:

cadena = Trim$(Mid$(directorio, RInStr(directorio, "/") + 1))


Saludos.

PD: No logro replicar tu error, en mi computador funciona. Utilizo Ubuntu 9.10 con gambas 2.21
 



 
abarzuaf - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprimir Directorios 
 
Hola.

Prueba con este codigo:

PUBLIC SUB Button1_Click()

DIM strRutaTotal AS String
DIM fichero AS String
DIM strRutaDirectorio AS String
DIM strCarpeta AS String

 
  fichero = "prueba.tar.gz"

  IF Dialog.SelectDirectory() THEN RETURN 'El usuario elige el directorio a comprimir.
  
  strRutaTotal = Dialog.Path 'cojo la ruta
  strRutaDirectorio = Left$(strRutaTotal, RInStr(strRutaTotal, "/") - 1)
  strCarpeta = Mid$(strRutaTotal, RInStr(strRutaTotal, "/") + 1)
  SHELL "cd" & " " & strRutaDirectorio & ";" & "tar -czvf" & " " & fichero & " " & strCarpeta
END
 

Saludos
 



 
abarzuaf - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprimir Directorios (solucioado) 
 
Lo he solucionado así:

PUBLIC SUB button1_click()

DIM directorio AS String
DIM fichero AS String
DIM cadena AS String
  
  fichero = "prueba.tgz"

  IF Dialog.SelectDirectory() THEN RETURN 'El usuario elige el directorio a comprimir.
  
  directorio = Dialog.Path 'cojo la ruta
  cadena = Mid$(directorio, RInStr(directorio, "/") + 1) 'sacamos el nombre del directorio de la ruta

SHELL "cp -R " & directorio & " " & User.home & "" 'COPIO EL DIRECTORIO EN USER.HOME Y LISTO
  
  
SHELL "tar czvf " & fichero & " " & cadena & " " 'comprimmimos el directorio

END

COPIANDO EL DIRECTORIO EN LA CARPETA DEL USUARIO.

Asi funciona bien.

Muchas gracias
 



 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprimir Directorios 
 
Se puede descomprimir en el directorio que quieras con el programa pax. Tienes un ejemplo en la función restaurar() del móduclo comun del proyecto que subí para Copias de Seguridad de bases MySQL.
Échale un vistado. Si no te aclaras con ese código y te sigue interesando el tema, puedo escarbarte el código necesario para hacer la descompresión.

Suerte
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Comprimir Directorios 
 
¿Y no sería más sencillo poner delante la dirección de compresión de la siguiente forma?

PUBLIC SUB Button1_Click()
SHELL "cd /home/nombre_de_usuario ;tar czvf paquete.tgz directorio"
END

(suponiendo que la carpeta que quieres comprimir está en la carpeta de algún usuario concreto)

En bash al menos lo haría así.
 



 
geaplanet - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron