¿Cómo puedo usar rsync para hacer una copia de seguridad de archivos personales en un disco duro externo o unidad de red sin tener problemas relacionados con los permisos?


1

Antecedentes

¿Cuál es el método "correcto" para usar rsync para respaldar datos? La razón por la que solicito el método "correcto" es porque mi experiencia anterior con el uso de rsync ha resultado en problemas relacionados con permisos, archivos / carpetas y marcas de tiempo. Por lo tanto, esta pregunta busca comprender cómo puedo usar rsync para hacer una copia de seguridad de los datos sin encontrarme con ningún permiso, máscara de archivo / carpeta o problemas relacionados con la marca de tiempo, principalmente cuando rsync se está utilizando en un sistema Windows .

Otra motivación para esta pregunta es asegurarme de no tener problemas con mi problema anterior en el que no podía acceder a ningún archivo en mi disco externo que estaba respaldado con rsync a través de cygwin. Esto fue una pesadilla porque realmente había perdido datos en mi PC principal e intentaba restaurarlos desde la copia de seguridad.

A continuación hay problemas similares que he encontrado al usar rysnc:

Mi comprensión del uso de rsync es intermedia y me he referido a 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" los datos para asegurarse de que tengan una copia de trabajo de los archivos en otra PC sincronizada. 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 que necesitan copia de seguridad podrían existir en cualquier sistema operativo (por ejemplo: Windows, Ubuntu, MacOS), pero principalmente en Windows.
  • En Windows, rsync se usa usando Windows Subsystem 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 obligatorio, pero el destino podría estar conectado 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 NO se transfieran archivos y 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: trabajando parcialmente

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 la transferencia de archivos, pero la marca de tiempo (creada, modificada, accedida) 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 obtengo errores como a continuación:

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 usar sudo? ¿Es porque estoy usando rsync en Windows a través de WSL? ¿Tendría que usarlo sudosi estuviera haciendo una copia de seguridad de archivos desde una PC con Linux (por ejemplo: Ubuntu)?

Aunque el ejemplo 3 es una solución que funciona, todavía tengo muchas preguntas:

  • ¿Cómo sé cuándo sudose requiere?
  • ¿Cuándo uso --no-po--chmod=ugo=rwX
  • ¿Qué pasa si no tengo permisos para usar sudo?
  • ¿Funcionaría si estuviera haciendo una copia de seguridad de los archivos en una unidad de red?
  • ¿Qué pasa si estoy usando SSH?
  • Al usar rsync desde Windows a través de WSL, ¿alguna vez tendré problemas de permisos extraños o de máscaras de archivos / carpetas como lo hice anteriormente ?

Debe usar "sudo" porque no es root, y realizar copias de seguridad de archivos creados con usuarios que no sean usted, incluidos los metadatos correctos, requiere acceso root. SSH no lo ayudará directamente, aunque rsync puede (y a menudo lo hace) ejecutar ssh. Por lo general, usaría sudo si realiza una copia de seguridad de archivos que no posee en Linux.
davidgo

--Chmod = ugo = rwX probablemente se requerirá cuando su sistema de archivos no sea compatible con los permisos Posix, o si tiene permisos de lectura pero no los permisos apropiados para un archivo. Si no tiene permiso para usar sudo, lo obtiene o sabe que perderá alguna funcionalidad para archivos que no posee. Si realiza una copia de seguridad en una unidad de red, los permisos están limitados por lo que admite la unidad de red. Puede usar archivos tar si desea conservar los permisos, pero también puede hacer una copia de seguridad de / etc / passwd que contiene las asignaciones de usuarios.
davidgo

Respuestas:


0

Ntfs y fat no se preocupan por el permiso de Linux, debe hacer que sea una copia de seguridad en una partición ext4

o hacer una copia de seguridad y comprimirlo en tar.gz y luego descomprimirlo en un archivo de sistema Linux y restaurarlo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.