25 votos

Sincronizar dos carpetas locales en bash

Tengo una carpeta grande "X" en mi directorio home y copia anticuada de esta en una unidad flash--Y. ¿Qué es el análogo de la rm Y; cp X Y , pero sin sobreescribir archivos ya existentes?

27voto

Mattias Åslund Puntos 852

Hay muchas más propiedades a rsync que menciona la respuesta anterior. Usted debe buscar en ellos a ti mismo:

man rsync

Pero para tu problema yo sugeriría:

rsync -a --delete X Y

Esta manera, el receptor (Y) eliminará cualquier archivo es que no es en X. Asegúrese de que hacerlo bien aunque. Usado incorrectamente como root puede matar fácilmente a su sistema... :)

16voto

Scott Bussinger Puntos 796

Echa un vistazo a rsync(1). Es la intención de hacer casi exactamente lo que usted desea.

rsync -av X Y

Soporta copia remota, a través de su propio protocolo o ssh, pero también puede ser utilizado localmente.

Dependiendo del comportamiento exacto que usted desea que usted desea, también puede pasar el --update opción. Esto le dirá a rsync no sobrescribir los archivos que ya existen en el destino y son más recientes que los de la fuente.

Si desea quitar los archivos adicionales (es decir, archivos que existen en Y pero no en X) puede agregar el --delete opción.

0voto

promet Puntos 1

Creo que parte de la funcionalidad que usted está buscando en la opción -u (actualización) existe realmente en esta opción:

"--ignore-existente"-skip actualizar archivos que existen en el receptor

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: