Sincronice un disco completo entre dos computadoras con Windows 10 a pedido, sin tener que ir a la nube

Quiero sincronizar los archivos de una unidad completa entre mis dos computadoras con Windows 10, una de escritorio y una portátil. Quiero poder hacerlo cuando elija , es decir, ejecutando un comando desde la línea de comandos.

Si elimino un archivo en una computadora, quiero que también se elimine de la otra. Si accidentalmente realizo cambios en el mismo archivo en ambas computadoras, quiero poder resolver los conflictos.

Quiero que todo esto suceda a través de mi red local , sin ir a la nube. Quiero que pueda manejar ~50 GiB de archivos. Y quiero que el proceso de sincronización sea lo más eficiente posible, sin enviar archivos de los que la otra computadora ya tiene copias.

@Chenmunka No parece que Robocopy le permita distinguir entre los archivos que eliminó a propósito (y que también desea eliminar en la otra computadora) frente a los archivos que eliminó por accidente y desea restaurar. Supongo que ese es el inconveniente más fácil de identificar.

Respuestas (2)

Decidí usar Git . Específicamente la versión de Windows de 64 bits de Git. La versión de 32 bits usaría todo el espacio de direcciones de 32 bits y luego moriría.

Tengo ambas computadoras conectadas al mismo enrutador DSL usando Gigabit, cables Ethernet con cable. Descubrí que esto hizo que la sincronización fuera mucho más rápida que usar la conexión inalámbrica para ambos, o con cable para uno e inalámbrico para el otro. Sus resultados pueden variar.

Tenga en cuenta que la sincronización de un disco completo a la vez no funcionó. Tuve que dividirlo por subcarpetas. es decir, en lugar de:

E:\

Lo divido en:

E:\Users\Public
E:\Users\<My User Name>

Etc.

Para instalar Git y mantenerlo actualizado, estoy usando Chocolatey . Para instalar Git inicialmente:

choco install git

...desde una ventana de Windows PowerShell con privilegios de administrador.

Para buscar e instalar actualizaciones de Git:

choco upgrade all

...de nuevo, desde una ventana de PowerShell con privilegios de administrador.

Llamemos a mi computadora de escritorio DESKTOP-PC y a mi laptop LAPTOP-PC. (No son los nombres reales de sus máquinas). Ahora, una vez que se instaló Git en ambas máquinas, las reinicié. Luego, en DESKTOP-PC, creé un archivo .gitignore en E:\Users\Public, para decirle a Git que ignore ciertos archivos y carpetas, como la papelera de reciclaje, la información del volumen del sistema y *.tmp.

A continuación, ejecuté lo siguiente desde una ventana de PowerShell que no era de administrador:

cd E:\Users\Public
git init
git add .
git commit -m "Initial Commit"

Luego compartí mi unidad E: a través de la red como \DESKTOP-PC\e. Usé Uso compartido avanzado en lugar del Asistente para compartir. Eliminé los permisos predeterminados para Todos y, en su lugar, agregué una entrada de permiso para mi usuario específicamente, con permisos completos.

Luego, cambié a LAPTOP-PC. LAPTOP-PC no tiene una unidad E:. Entonces, en su lugar, creé una carpeta llamada C:\E_Users. Luego abrí una ventana de PowerShell, sin privilegios de administrador, y ejecuté lo siguiente:

git clone file://///DESKTOP-PC/e/Users/Public

Esto copió todos los archivos de DESKTOP-PC a LAPTOP-PC. Tal vez había archivos con un valor de ~ 30 GiB, por lo que tomó unos minutos. (file:///// es la forma compatible con Unix/Linux de referirse a la ruta UNC \.... Esto me permite usar Git Bash a veces si quiero, en lugar de Windows Command Prompt o Windows PowerShell. )

El siguiente paso fue compartir la carpeta C:\E_Users de LAPTOP-PC en la red como \E5-772G\E_Users. Configuré esto con los mismos permisos que la carpeta compartida en DESKTOP-PC. (Tenga en cuenta que esto probablemente no habría funcionado si no tuviera el mismo nombre de usuario y contraseña en ambas PC).

Luego, volví a cambiar a DESKTOP-PC. Todavía en PowerShell, ejecuté lo siguiente:

git remote add LAPTOP-PC file://///LAPTOP-PC/E_Users/Public
git fetch --all
git branch --set-upstream-to=LAPTOP-PC/master master
git pull --all

Todo listo. Ahora, cada vez que agrego, cambio o elimino cualquier archivo en DESKTOP-PC, abro PowerShell o Git Bash, cambio al directorio adecuado y ejecuto:

git status

para ver exactamente qué archivos he cambiado. Entonces:

git add .
git status
git commit -m "<Brief, present-tense description of the changes I made>"

Esto registra mis últimos cambios con Git. Luego cambio a LAPTOP-PC y ejecuto:

git pull --all --prune

Esto extrae mis últimos cambios de DESKTOP-PC a LAPTOP-PC.

Finalmente, vuelvo a cambiar a DESKTOP-PC y ejecuto:

git pull --all --prune

de nuevo. Ahora Git en DESKTOP-PC sabe que LAPTOP-PC tiene todos los cambios más recientes.

(Descubrí que tirar funcionaba mejor que empujar, por cualquier motivo).

Si cambio algunos archivos en LAPTOP-PC, el proceso es el mismo que el anterior, excepto que cambio en qué computadora ejecuto qué comando y en qué orden.

¡Espero que esto ayude a alguien!

Personalmente, me habría ido con Bvckup2, o tal vez Bit Torrent Sync, pero si estás contento, eso es lo principal. Después de 2 días, puede aceptar su propia respuesta, lo que ayudará a otros a leer esto en el futuro.

Sé que esto es viejo, pero descubrí que quería hacer casi exactamente lo mismo. Terminé usando Free File Sync para hacerlo y excluí los archivos ocultos.

Su respuesta podría mejorarse con información de apoyo adicional. Edite para agregar más detalles, como citas o documentación, para que otros puedan confirmar que su respuesta es correcta. Puede encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda .