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

Bash Scripting : mover archivos de un directorio a otro

Estas en el tema de Bash Scripting : mover archivos de un directorio a otro en el foro de Unix / Linux en Foros del Web. Buenos dias , ando buscando a ver si alquien tiene algun script hecho con bash scripting para copiar ficheros de un directorio a otro mi ...
  #1 (permalink)  
Antiguo 05/05/2011, 04:34
 
Fecha de Ingreso: enero-2004
Ubicación: here I Am
Mensajes: 437
Antigüedad: 18 años, 5 meses
Puntos: 1
Bash Scripting : mover archivos de un directorio a otro

Buenos dias , ando buscando a ver si alquien tiene algun script hecho con bash scripting para copiar ficheros de un directorio a otro mi idea es la siguiente :

dir_inicial=/home/test/
dir_destino=/var/www/pruebas/

Me gustaria que cada cierto tiempo (eso lo solucionó con el cron incluyendo este script) se busquen los archivos que hay en dir_inicial con una fecha de modificación de entre una semana y la data actual y se copien en dir_destino.

Estoy mirando un manual de scripting pero si alguien tuviese una parte del código hecho me hecharia un cable , ya se que serán 5 o 6 lineas pero me van a costar sacar las.

gracias radge
__________________
Nuevo foro sobr el mundo del motor - Renault foro
http://www.renaultforo.com
  #2 (permalink)  
Antiguo 06/05/2011, 13:20
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 13 años, 5 meses
Puntos: 46
Respuesta: Bash Scripting : mover archivos de un directorio a otro

Hola.

Creo que lo que necesitas es algo de lo que manejan en este post:
http://www.forosdelweb.com/f41/uso-d...o-find-907864/

te lo dejo hechale un vistaso y tambien dejame probar y ver en que mas te puedo ayudar.

Suerte.
  #3 (permalink)  
Antiguo 09/05/2011, 02:02
 
Fecha de Ingreso: enero-2004
Ubicación: here I Am
Mensajes: 437
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Bash Scripting : mover archivos de un directorio a otro

Gracias !!! Acabo de mirar-me el link juntamente con este otro

http://ubuntuforums.org/showthread.php?t=328097

Y de momento tengo el siguiente trozo de codigo que de momento "copia " todos los archivos de un directorio a otro , ahora me falta ponerle por alli en medio que mira las fechas de creación de los ficheros.

Código PHP:
#!/bin/bash
$dir_ini='/home/test/dir1/'
$dir_fin='/home/test/dir2/'

for file in `$dir_ini  -d *` ; do
   
find . -name *.* -mtime -10 -exec cp $"file" $dir_fin {} ;
done 
También he probado algo como esto
Cita:
sudo find dir1 -maxdepth 2 -ctime -10 -exec cp "$file" dir2/ {} \;
Pero me devuelve el error
Cita:
cp: ha fallat stat() sobre «»: No such file or directory
cp: es descarta el directori «dir2/»
cp: el destí «dir1/copyfiles.sh» no és un directori
cp: el destí «dir1/fitxer1_dir1.txt» no és un directori
cp: el destí «dir1/fitxer3_dir1.txt» no és un directori
cp: el destí «dir1/fitxer2_dir1.txt» no és un directori
__________________
Nuevo foro sobr el mundo del motor - Renault foro
http://www.renaultforo.com

Última edición por radge; 09/05/2011 a las 03:16
  #4 (permalink)  
Antiguo 09/05/2011, 09:20
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Bash Scripting : mover archivos de un directorio a otro

$dir_ini -d *

expande a

/home/test/dir1/ -d *

dir1 no es un comando, por lo que eso da error de sintaxis. -d es un parámetro para ls, que no estás usando. En tu caso no necesitás el for. Supongo que este ls se hace para recorrer los subdirectorios, pero no sirve: no toma archivos del directorio padre ni funciona para más de 1 nivel de subdirectorios.

find .
¿Por qué buscas los archivos en la carpeta actual? supongo que lo que querés hacer es find $dir_ini

-name *.*
No es error de sintaxis pero no es lo que querés. Al hacer *.* sin comillas, bash expande a los nombres de archivo actuales y rompe el comando. Si en la carpeta actual existen los archivos a.txt y b.txt el comando queda

-name a.txt b.txt

lo cual sí es un error de sintaxis. Además, como agregaste el punto, no se considerarán archivos (o directorios) sin extensión. Mejor dejalo como * en vez de *.*, funciona como se espera. *.* es algo de DOS, no de UNIX.

exec cp $"file" $dir_fin {}
$"file" es otro error de sintaxis.

Tu segundo ejemplo es mejor, pero yo lo haría así:

Código BASH:
Ver original
  1. cd $DIR_INI
  2. find . -mtime -8 -exec mkdir -p $DIR_FIN/`dirname {}` \; -exec cp {} $DIR_FIN/`dirname {}` \;

Para cada archivo en el directorio actual, modificado hace menos de 8 días (es decir, en la última semana), crear su ruta en $DIR_FIN (ruta relativa a $DIR_INI) y copiarlo, conservando la estructura.
No está probado pero debería funcionar. MKDIR puede dar errores al intentar crear un directorio que ya existe, eso se puede arreglar


Saludos.
  #5 (permalink)  
Antiguo 09/05/2011, 09:23
 
Fecha de Ingreso: enero-2004
Ubicación: here I Am
Mensajes: 437
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Bash Scripting : mover archivos de un directorio a otro

Muchas gracias, pero justo ahora acabo de terminar-lo con PHP , como me corria prisa lo he hecho con php.

gracias de todas formas.

salu2 radge
__________________
Nuevo foro sobr el mundo del motor - Renault foro
http://www.renaultforo.com

Etiquetas: bash, directorio, scripting, sistemas-unix
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 16:51.