¿Rsync elimina archivos, carpetas en el destino por defecto?

44

Archivos

Supongamos que /foo/srccontiene solo A.cy que /foo/destcontiene ambos A.cy B.c. Y supongamos que ejecuto el siguiente comando:

rsync /foo/src/ /foo/dest

Se rsyncborra B.c?

Carpetas

Ahora suponga que /foo/srccontiene el directorio Acon algunos archivos dentro y que /foo/destcontiene ambos directorios Ay B, cada uno con algunos archivos dentro de ellos. Y supongamos que ejecuto el siguiente comando (la opción -a incluye -r, recursivo):

rsync -a /foo/src/ /foo/dest

¿Se rsyncborrará By sus contenidos?

Crowder
fuente
Necesitas el --deleteinterruptor.
fideli

Respuestas:

51

De manera predeterminada, rsync no elimina archivos, pero eso depende de las opciones de comandos que especifique. Puede utilizar cualquiera de los siguientes si desea eliminar archivos:

  • −−del (alias para −−delete − during)
  • −−delete (elimina archivos extraños de directorios de destino)
  • −−delete − before (el receptor elimina antes de xfer [predeterminado])
  • −−delete − during (el receptor elimina durante xfer, no antes)
  • −−delete − after (el receptor elimina después de xfer, no antes)
  • −−delete − excluded (también elimina los archivos excluidos de los directorios de destino)
  • −−max − delete = NUM ​​(no elimine más de NUM archivos)

Dado que llamó específicamente a la opción -a , esto es lo que dice la página de manual

−a, −−archive >

Esto es equivalente a −rlptgoD . Es una forma rápida de decir que quiere recurrencia y quiere preservar casi todo (siendo −H una omisión notable). La única excepción a la equivalencia anterior es cuando se especifica −−files − from , en cuyo caso −r no está implícito.

Tenga en cuenta que −a no conserva los enlaces duros , porque encontrar archivos con enlaces múltiples es costoso. Debe especificar por separado −H .

Parece que la respuesta a su pregunta es NO, no se eliminará dados sus ejemplos.
HTH

SaxDaddy
fuente