Fondo
¿Cuál es el método "correcto" para utilizar rsync para realizar copias de seguridad de datos? La razón por la que solicito el método "correcto" es porque mi experiencia pasada con el uso de rsync ha resultado en problemas relacionados con permisos, máscara de archivo/carpeta y marca de tiempo. Por lo tanto, esta pregunta busca comprender¿Cómo puedo usar rsync para realizar copias de seguridad de datos sin encontrarme con ningún permiso, máscara de archivo/carpeta o problemas relacionados con la marca de tiempo, principalmente cuando se usa rsync en un sistema Windows?.
Otra motivación para esta pregunta es asegurarme de no entrar en minúmero anteriordonde no pude acceder a ningún archivo en mi disco externo del que se hizo una copia de seguridad con rsync a través de cygwin. Esto fue una pesadilla porque en realidad había perdido datos en mi PC principal y estaba intentando restaurarlos desde la copia de seguridad.
A continuación se detallan problemas similares con los que me encontré al usar rysnc:
- No se puede acceder a ningún archivo en el disco externo del que se realizó una copia de seguridad mediante rsyncLa copia de seguridad basada en Rsync y Cygwin en Windows genera errores de permiso denegado
- No se puede conservar la marca de tiempohttps://unix.stackexchange.com/questions/61586/how-to-tell-rsync-to-preserve-time-stamp-on-files-when-source-tree-has-a-mounted
- rsync - problema fallido de mkstemphttps://stackoverflow.com/questions/11039559/rsync-mkstemp-failed-permission-denied-13
Mi comprensión del uso de rsync es intermedia y he consultado las guías que se enumeran a continuación. Sin embargo, mi mayor confusión sobre el uso de rsync proviene de los permisos, el enmascaramiento de archivos/carpetas, Posix, etc.
Requisitos/supuestos
- Quiero usar rsync en el contexto de "copia de seguridad" y NO en el contexto de "sincronización". A menudo, otros usuarios que hacen preguntas relacionadas con rsync pueden estar interesados en "sincronizar" datos para asegurarse de tener una copia funcional de los archivos sincronizados en otra PC. Sin embargo, mi intención no es "sincronizar" sino simplemente "hacer una copia de seguridad", de modo que si algo le sucede a mi PC, pueda obtener una última copia de seguridad y restaurarla.
- Los archivos originales de los que es necesario realizar una copia de seguridad pueden existir en cualquier sistema operativo (por ejemplo, Windows, Ubuntu, MacOS), pero principalmente en Windows.
- En Windows, rsync se usa usando el Subsistema de Windows para Linux (WSL) y NO a través de cygwin
- El destino de la copia de seguridad podría ser una unidad externa formateada como NTFS, FAT32 o exFAT o puede ser una unidad de red (por ejemplo, Samba Share).
- Esto no es necesario, pero el destino se puede conectar mediante SSH.
Mi método actual y problemas
Estoy usando rsync a través del Subsistema de Windows para Linux (WSL) en Windows 10. A continuación se muestran ejemplos de problemas con los que me he encontrado:
Ejemplo 1:No funciona
rsync -avhP --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup
Este método da como resultado que los archivos NO se transfieran y se produzcan errores como los siguientes:
rsync: chgrp "/mnt/my_usb_mount/ProjectA/src" failed: Operation not permitted (1)
y
rsync: mkstemp "/mnt/my_usb_mount/ProjectA/src/.mydata.json.6cfTCf" failed: Operation not permitted (1)
Ejemplo 2:Parcialmente trabajando
rsync -avhP --no-p --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup
o
rsync -avhP --no-p --chmod=ugo=rwX --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup
Este método de uso de rysnc da como resultado que los archivos se transfieran, pero la marca de tiempo (creación, modificación, acceso) está configurada en el momento de la transferencia. Si ejecuto el comando rsync nuevamente, todos los archivos se detectarán como modificados y se volverán a transferir debido a la marca de tiempo incorrecta. Además recibo errores como los siguientes:
rsync: chgrp "/mnt/my_usb_mount/ProjectA/src" failed: Operation not permitted (1)
Ejemplo 3:Funcionando correctamente.
sudo rsync -avhP --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup
Este método funciona perfectamente, sin embargo, no entiendo por qué tengo que usarlo sudo
. ¿Es porque estoy usando rsync en Windows a través de WSL? ¿Tendría que usarlo sudo
si estuviera haciendo una copia de seguridad de archivos desde una PC con Linux (por ejemplo, Ubuntu)?
Aunque el ejemplo 3 es una solución funcional, todavía tengo muchas preguntas:
- ¿Cómo sé cuándo
sudo
es necesario? - ¿Cuándo uso
--no-p
o--chmod=ugo=rwX
- ¿Qué pasa si no tengo permisos para usar
sudo
? - ¿Funcionará si estuviera haciendo una copia de seguridad de los archivos en una unidad de red?
- ¿Qué pasa si estoy usando SSH?
- Cuando uso rsync desde Windows a través de WSL, ¿alguna vez me encontraré con permisos extraños o problemas de máscara de archivos/carpetas mientraspreviamente tener?
Respuesta1
A Ntfs y fat no les importan los permisos de Linux, debes hacer una copia de seguridad en una partición ext4
o hacer una copia de seguridad y comprimirla en tar.gz y luego descomprimirla en un archivo del sistema Linux y restaurarla