Pregunta

Recientemente he creado mi primera escritura del golpe, y estoy teniendo problemas perfeccionar su operación. Estoy tratando de copiar ciertas carpetas de una unidad local, a una unidad de red.

Estoy teniendo el problema de la eliminación de carpetas una vez que se copian, a veces la carpeta estaría vacía de contenidos, pero la propia carpeta quedaría, otras veces no pasaría nada en absoluto. ¿Hay una mejor manera de tratar de carpetas Eliminar después de rsync es copiado hecho? Yo estaba tratando de excluir la carpeta de búfer de TV en directo, pero en realidad, puede soplar a la basura sin consecuencias en caso necesario.

#!/bin/bash

network="CBS"
useracct="tvcapture"
thedate=$(date "+%m%d%Y")
folderToBeMoved="/users/$useracct/Documents"
newfoldername="/Volumes/Media/TV/$network/$thedate"

ECHO "Network is $network"
ECHO "date is $thedate"
ECHO "source is $folderToBeMoved"
ECHO "dest is $newfoldername"

mkdir $newfoldername
rsync -av $folderToBeMoved/"EyeTV Archive"/*.eyetv $newfoldername --exclude="Live TV Buffer.eyetv"

# this fails when there is more than one *.eyetv folder
if [ -d $newfoldername/*.eyetv ]; 
then 
#this deletes the contents of the directories
find $folderToBeMoved/"EyeTV Archive"/*.eyetv \( ! -path $folderToBeMoved/"EyeTV Archive"/"Live TV Buffer.eyetv" \) -delete
#remove empty directory
find $folderToBeMoved/"EyeTV Archive"/*.eyetv -type d -exec rmdir {} \;
fi
¿Fue útil?

Solución

Probablemente hay un montón de maneras de hacer esto, pero yo iría con:

rsync -av $folderToBeMoved/"EyeTV Archive"/*.eyetv $newfoldername --exclude="Live TV Buffer.eyetv" && rm -rf $folderToBeMoved

Los medios de sintaxis && solamente hacer esto es el comando anterior salido de forma satisfactoria, y rm -rf obligará a la eliminación de directorios, incluso si hay archivos en ellos.

También puede probar las opciones de rsync --remove-source-files, pero yo creo que le dejará con los directorios, por lo que aún tendrá que limpiarlos después.

Y como se mencionó en el comentario anterior, se quiere evitar comandos MAYÚSCULAS como eco, causa que hará que las cosas para romper en muchos lugares.

Para más detalles sobre el estado de salida, así como un montón de otros grandes consejos cuando se trabaja con bash, siempre acabo volviendo a http://tldp.org/LDP/abs/html/exit-status.html .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top