2009-01-04 11 views
5

que tienen esta escritura del golpe el funcionamiento de mi copia de seguridad en un disco duro externo ... sólo si esa unidad se monta (OS X):¿Cómo le digo a rsync que se ejecute solo si el directorio de destino existe?

DIR=/Volumes/External; 
if [ -e $DIR ]; 
then rsync -av ~/dir_to_backup $DIR; 
else echo "$DIR does not exist"; 
fi 

Esto funciona, pero tengo la sensación de que estoy leyendo mal la página man rsync. ¿Existe una opción de rsync incorporada para abortar la ejecución si el directorio de destino de nivel superior no existe? Sin probar la existencia de/Volumes/External, se creará un directorio con ese nombre si aún no está montado.

Respuesta

3

Estas dos banderas se parecen a lo que estás buscando:

--existing, --ignore-non-existing 

Desde la página del manual:

--existing, --ignore la no-existente
Esto indica a rsync para omitir la creación de archivos (incluidos los directorios) que todavía no existen en el destino. Si esta opción se combina con la opción --ignore-existing, no se actualizarán los archivos (lo que puede ser útil si lo único que desea hacer es eliminar archivos extraños).

+0

con --existing, sus nuevos directorios en la jerarquía de origen nunca se crearán en la unidad de copia de seguridad ... – mjy

+1

Sí, estas son las opciones en las que parece que no puedo ponerme a trabajar como quiero. Incluso cuando la ejecución aborta porque el directorio de destino no existe, se crea el directorio de destino (aunque no se copia el árbol). – Marcus

2

yo sepa no, pero se puede simular el behavour con una barra final:

rsync -av dir_to_backup /Volumes/External/;

Saldrá con un error si el directorio no existe (que pueden o no desear) .

Así mismo, se puede optimizar la distancia si:

test -e $DIR && rsync -av ...

+1

No considero que la primera afirmación sea cierta. El directorio se crea independientemente de la barra al final. Me gusta la optimización del intérprete de comandos para la prueba de existencia, excepto que quiero algún error de salida si el directorio no existe, así que probablemente lo mantendré detallado. – Marcus

1

No, no parece haber ninguna de esas opciones, por lo que yo puedo ver en la página de manual.

Cuestiones relacionadas