Script Rsync bash y archivos de enlace físico
Pregunta
Estoy creando un script bash para hacer una copia de seguridad de mis archivos con rsync.
Todas las copias de seguridad provienen de un único directorio.Sólo quiero hacer una copia de seguridad de los archivos nuevos o modificados.
Actualmente, le estoy diciendo a rsync que haga una copia de seguridad del directorio y verifique los archivos en comparación con la última copia de seguridad.
La forma en que estoy haciendo esto es
THE_TIME=`date "+%Y-%m-%dT%H:%M:%S"`
rsync -aP --link-dest=/Backup/Current /usr/home/user/backup /Backup/Backup-$THE_TIME
rm -f /Backup/Current
ln -s /Backup/Backup-$THE_TIME /Backup/Current
Estoy bastante seguro de que tengo la sintaxis correcta para esto.Cada copia de seguridad se comparará con la carpeta "Actual" y se cargará solo cuando sea necesario.Luego eliminará la carpeta actual y volverá a crear el enlace simbólico a la copia de seguridad más reciente que acaba de hacer.
Recibo un error cuando ejecuto el script:
rsync: link "/Backup/Backup-2010-08-04-12:21:15/dgs1200series_manual_310.pdf"
=> /Backup/current/dgs1200series_manual_310.pdf falló:Operación no soportada (45)
El sistema operativo host ejecuta el sistema de archivos HFS, que admite enlaces físicos.Estoy tratando de averiguar si hay algo más que no admite esto o si tengo un problema en mi código.
Gracias por cualquier ayuda
Editar:
Puedo crear un enlace físico en mi máquina local.También puedo crear un enlace duro en el servidor remoto (cuando se registra localmente) no puedo crear un enlace duro en el servidor remoto cuando se monta a través de AFP.Incluso si ambos archivos existen en el servidor.
Supongo que esto es una limitación de afp.
Solución
Hay dos cosas en la página donde se destacan hombre que merece la pena:
Si de archivos no están ligando, vuelva a comprobar sus atributos. también comprobar si algunos atributos están siendo forzados fuera del de rsync control, como una opción que aplasta a raíz de un único montaje usuario, o se monta una unidad extraíble con la propiedad genéricos (tales OS X como de “Ignorar propiedad sobre este volumen” opción).
y
Tenga en cuenta que las versiones de rsync 2.6.1 antes tenían un error que podría Prevenir --link-dest funcione correctamente para un no-superusuario cuando -o se ha especificado (o implícitos en -a). Puede trabajar-en torno a este fallo, evitando la opción -o al enviar a un viejo rsync.
¿Tiene el "Ignorar propiedad" opción habilitada? ¿Qué versión de rsync
tiene?
Además, ¿ha intentado crear manualmente un vínculo físico similar utilizando ln
en la línea de comandos?
Otros consejos
En caso de que su línea de comando sea solo un ejemplo:Asegúrese de especificar siempre el directorio de destino del enlace con un absoluto nombre de ruta!Eso es algo que me llevó bastante tiempo descubrir...
No sé si este es el mismo problema, pero sé que rsync no puede sincronizar un archivo cuando el destino es una partición FAT32 y el nombre del archivo tiene un ":" (dos puntos) en el mismo. [El sistema de ficheros fuente es ext3, y el destino es FAT32]
Trate de volver a configurar el comando date
de modo que no utiliza dos puntos y ver si eso hace la diferencia.
por ejemplo.
THE_TIME=`date "+%Y-%m-%dT%H_%_%S"`