Sincronice dos carpetas locales en bash

23

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

Jofsey
fuente

Respuestas:

26

Hay muchas más propiedades para rsync de las que menciona la respuesta anterior. Deberías mirarlos tú mismo:

man rsync

Pero para su problema, sugeriría:

rsync -a --delete X Y

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

Mattias Åslund
fuente
1
Acepta que debes tener mucho cuidado con esto. Intente agregar --dry-run al comando para ver qué sucederá sin realizar ningún cambio. Si va bien, haga el mismo comando sin --dry-run
squarecandy el
Una pequeña corrección que me tomó un tiempo para llegar a: rsync -a --delete X/ Y. Ese pequeño corte después de X lo hizo funcionar como estaba previsto para mí, por lo que podría ayudar a otros también. Explicado aquí: abbeyworkshop.com/howto/unix/nix_rsync/index.html
Shovalt
15

Eche un vistazo a rsync (1) . Tiene la intención de hacer exactamente lo que quieres.

rsync -av X Y

Admite la copia remota, a través de su propio protocolo o ssh, pero también se puede usar localmente.

Dependiendo del comportamiento exacto que desee, también puede 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 de la fuente.

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

Kristof Provost
fuente
Pero no eliminará archivos, que los eliminados en X, mientras que lo rm Y; cp X Yhará.
Para eliminar archivos que se eliminaron de X, use la opción --delete.
csonuryilmaz
0

Intente usar rsnyc, posiblemente con el siguiente comando:

rsync -avzu /home/x /y

-u = no sobrescribe un archivo en el destino, si se modifica

bwDraco
fuente
Pero no eliminará archivos, que los eliminados en X, mientras que lo rm Y; cp X Yhará.
0

Creo que algunas de las funcionalidades que está buscando en la opción -u (actualización) realmente existen en esta opción:

"--no existe-existente" - omite la actualización de archivos que existen en el receptor

prometió
fuente