Recibo el error mencionado en el título.
Encontré esta pregunta similar: Ejecute rsync con permiso de root en la máquina remota . Eso no responde mi pregunta.
Soy el administrador del servidor remoto y quiero usar rsync
para hacer una copia de seguridad de los archivos en mi casilla local. Aquí está mi comando rsync:
$ rsync -avz [email protected]:/var/www/ /backups/Sites/MySite/
Funciona principalmente. El inicio de sesión es a través de un par de llaves. No y no puedo usar una contraseña (EDITAR: para iniciar sesión a través de SSH). Solo unos pocos archivos no se transferirán debido a los permisos. No quiero cambiar esos permisos.
Aquí está el error:
receiving file list ... done
rsync: send_files failed to open "/var/www/webapp/securestuff/install.php": Permission denied (13)
Yo no quiero cambiar los permisos en ese archivo. Esto (y otros similares) no debe ser legible (excepto por la raíz).
Esto tiene que ejecutarse en un trabajo cron y prefiero una solución simple de una línea usando solo el comando rsync. La siguiente opción sería un script de shell al que pueda llamar desde el trabajo cron. En ningún caso puedo iniciar sesión manualmente en la máquina remota y convertirme en root (porque estaré dormido cuando se ejecute)
¿Cómo puedo usar rsync para hacer una copia de seguridad en mi casilla local?
fuente
rsync: send_files failed to open "/cygdrive/...": Permission denied (13)
. Entonces mi computadora fuente era Windows Cygwin. Situación ligeramente diferente, pero para la posteridad, mi solución fue hacer clic derecho en cmd.exe y Ejecutar como administrador .Respuestas:
No puede hacer una copia de seguridad de un archivo que no puede leer de otra manera, por lo que los permisos deberán ser modificados o anulados por la raíz .
Sus opciones con más detalle:
Anule los permisos rsync'ing como
[email protected]
directamente. (... o configurando sudo en el servidor para permitir la ejecución sin contraseña del
rsync
componente del lado del servidor.y
Cree una cuenta dedicada de "copia de seguridad del sitio web" en el servidor. Cambie los permisos de los archivos para que puedan leerse en la cuenta de "copia de seguridad del sitio web"; puede usar ACL y
setfacl
para eso. No use esta cuenta para nada más.Escriba un script en el servidor que volcaría / var / www / en un tarball cifrado. Nuevamente, esto se puede hacer como root (a través de crontab) o configurando sudo para que no requiera una contraseña para ese script. Por ejemplo:
La copia de seguridad se realizaría tirando todo el tarball cada vez, lo que podría ser ineficiente con sitios grandes:
El requisito de contraseña se eliminaría editando sudoers :
fuente
En el host remoto, puede ejecutar rsync daemon con
en el
/etc/rsyncd.conf
archivoEsto permitirá que el demonio use la
CAP_DAC_OVERRIDE
capacidad y lea el sistema de archivos local sin cambiar los permisos / propiedad.Si solo necesita hacer una copia de seguridad, es una buena práctica configurar rsync en modo de solo lectura:
fuente
Si solo puede leer los archivos
root
, debe tenerroot
acceso para hacer una copia de seguridad del archivo leyéndolo desde el sistema de archivos.rsync
está leyendo los archivos del sistema de archivos, no del dispositivo sin formato.Con la excepción de
dump
,dd
y las copias de seguridad similares que copian la partición en lugar de los archivos, los programas de copias de seguridad leen los archivos del sistema de archivos. Las utilidades de respaldo no podrán leer y los archivos de respaldo para los cuales los permisos del ID de usuario utilizado para ejecutarlos impiden el acceso. Este es el caso con el que te encuentras.En la mayoría de los casos, debe confiar en su software de respaldo lo suficiente como para permitirle leer todos sus datos. Esto también significa que debe confiar en su medio de respaldo con todos sus datos. En algunos casos, es posible que desee excluir algunos archivos de la copia de seguridad y utilizar un método alternativo para hacer una copia de seguridad de su contenido.
EDITAR: a medida que esté archivando los datos (copiando todos los permisos), necesitará acceso raíz en ambos servidores. Si está haciendo esto como una copia de seguridad, es posible que desee buscar una solución como BackupPC que usa rsync para leer los archivos, pero almacena los archivos en su propio árbol de directorios.
fuente