Sincronizar dos carpetas locales en bash

Sincronizar dos carpetas locales en bash

Tengo una carpeta grande "X" en mi directorio de inicio y una copia desactualizada de esta en una unidad flash: Y. ¿Cuál es el análogo de rm Y; cp X Y, pero sin sobrescribir archivos ya existentes?

Respuesta1

Hay muchas más propiedades parasincronizaciónde lo que menciona la respuesta anterior. Deberías investigarlos tú mismo:

man rsync

Pero para tu problema te sugiero:

rsync -a --delete X Y

De esta manera, el receptor (Y) eliminará cualquier archivo que tenga y que no esté en X. Sin embargo, asegúrese de hacerlo bien. Usado incorrectamente como root puede matar fácilmente su sistema... :)

Respuesta2

Echa un vistazo asincronización(1). Está destinado a hacer prácticamente exactamente lo que quieres.

rsync -av X Y

Admite copia remota, mediante protocolo propio o ssh, pero también se puede utilizar de forma local.

Dependiendo del comportamiento exacto que desee, es posible que también desee pasar la --updateopción. Esto le indicará a rsync que no sobrescriba los archivos que ya existen en el destino y que son más nuevos que los del origen.

Si desea eliminar archivos adicionales (es decir, archivos que existen en Y, pero no en X), puede agregar la --deleteopción.

Respuesta3

Podrías usarFitus/Zaloha.sh. Primero calcula las acciones de sincronización necesarias, se las presenta, solicita confirmación y luego las ejecuta:

$ Zaloha.sh --sourceDir="X" --backupDir="Y"

Respuesta4

Creo que algunas de las funciones que buscas en la opción -u (actualizar) realmente existen en esta opción:

"--ignore-existing": omite la actualización de archivos que existen en el receptor

información relacionada