domingo, octubre 12, 2014

Copiar ficheros bajo MTP con Timestamp

Hoy he tenido un problema a la hora de liberar espacio del móvil de mi mujer porque al conectarlo por USB y copiar las imágenes y vídeos la fecha de modificación no se mantenía. Lo primero que he intentado ha sido usar la linea de comandos con el comando -p (preserve)
cp -p   (Operation not supported)
Mirando un poco, he averiguado que los Android (no se si los antiguos o los nuevos, en mi caso es un Samsung Galaxy S3 Mini) se montan en Ubuntu utilizando el protocolo MTP con lo que hay que copiar los ficheros usando el comando gvfs-copy Segundo intento
gvfs-copy --preserve  
Con esto se copian todos los ficheros pero no respeta la fecha de modificación, parece que se trata de un bug reconocido, no he tenido tiempo para investigar mucho, reconozco que soy un novato en sistemas operativos. Solución final, me he creado un script (típica solución de linuxeros) que copia el fichero y luego le setea la fecha de modificación. Aquí os lo dejo, hay que tener en cuenta que en mi caso el dispositivo se montó en
mtp://[usb:002,011]/
cada vez que se monta, este número cambia, tenedlo en cuenta a la hora de cambiar de directorio
1:  #!/bin/bash  
2:  cd /run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C011%5D/Card/DCIM/Camera  
3:  for i in *  
4:  do  
5:      mod_date=$(stat -c "%y" "$i"|sed 's/\..*$//')  
6:      dest_file=/media/discolo/Imagenes/Backup/"$i"   
7:      gvfs-copy $i "$dest_file"   
8:      touch -d"$mod_date" "$dest_file"  
9:  done  
Espero que le sirva a alguien, Saludos.