¿Cómo archivar automáticamente un directorio?

47

Quiero hacer una sincronización unidireccional.

Estoy teniendo Folder Aen mi computadora que se actualiza constantemente con contenido.
Otro Folder Bse utiliza para fines de copia de seguridad que se encuentra en un disco duro externo.

Ahora lo que espero es que cualquier extra que esté presente en la carpeta A debería ir a la carpeta B. Sin embargo, algo que está presente en B y NO en A "" NO se copiará a A "".

En pocas palabras, la carpeta de respaldo puede copiar todo de la carpeta de origen, sin embargo, no se debe copiar nada de la carpeta de respaldo a la fuente.

Bhavesh Diwan
fuente
Eso no es sincronización ...
Braiam
@Braiam, ¿cómo se llama entonces? No pude encontrar una palabra como OP. Si lo sabes, por favor dilo.
Jo Smo
@JoSmo copy? ¿Archivo? ¿Apoyo?
Braiam
@Braiam gracias, ahora me siento estúpido por preguntar. : D
Jo Smo

Respuestas:

63

Suena como una tarea perfecta para rsync

sudo rsync -az /path_to/A /path_to/B

-un modo de archivo (implica recursivo, copiar enlaces simbólicos como enlaces simbólicos, preservar propietario, tiempos de modificación, grupo, propietario, archivos especiales y de dispositivo)

-z comprime los datos

Si desea eliminar los archivos eliminados en A de los archivos en B, use la --deleteopción

Para información adicional ver:

https://help.ubuntu.com/community/rsync

Puedes ejecutar rsync desde cron

sudo crontab -e

Agregar en una tarea por hora

@hourly rsync /path_to/A /path_to/B

https://help.ubuntu.com/community/CronHowto

Pantera
fuente
77
Si hay carpetas dentro de las carpetas, deberá usar la opción -r.
John S Gruber
2
Llego un poco tarde a la fiesta, pero para ejecutar el script de sincronización cuando el disco duro está conectado, debería usar udev. Mira esta pregunta de hace un tiempo. askubuntu.com/questions/25071/…
jackweirdy
1
@JohnSGruber la opción -a implica recursiva, editaré la respuesta para señalar esto
Tomás
1
si los archivos están en la misma máquina, -zsimplemente ralentice el proceso
Postadelmaga
1
@JoSmo - askubuntu.com/questions/476041/… y askubuntu.com/questions/609968/… y man rsync y haga una nueva pregunta si es necesario en lugar de hacer comentarios.
Panther
15

Sugeriría usar rsync para este propósito. Rsync es extremadamente rápido, estable y versátil. Hay una buena introducción en http://help.ubuntu.com/community/rsync

Si lo desea, hay una interfaz gráfica opcional: grsync

 sudo rsync -azv --exclude 'dir1' /home/path/folderA/ /home/path/folderB

El comando anterior copiará de la carpeta A a la carpeta B, excluyendo dir1. Las banderas son

-a preserves time stamps
-z is to enable compression
-v verbose

Hay muchas más opciones disponibles.

JIM
fuente
8

Siempre encontré que Unison es muy útil. Tiene una interfaz basada en texto o GUI, y bastantes opciones diferentes para ajustarlo a lo que desea (con un poco de violín). Lleva bastante tiempo hacer la primera sincronización, pero después de eso es genial. Puede hacer que se sincronice de una manera, como lo desee, pero lo obtendrá de forma automática. También se puede eliminar de la copia de seguridad o no según lo elija.

También puede encontrar problemas con los permisos que son compatibles con el formato de archivo ubuntu, pero tal vez no en el disco duro externo (dependiendo de si el disco duro externo se va a usar en una máquina con Windows, esto puede ser algo bueno), así que querrá sincronizar sin los permisos potencialmente.

De todos modos, lo bueno es que con el tutorial es relativamente sencillo configurarlo una vez, y luego es una interfaz GUI cuando lo desee.

Aquí hay información al respecto: http://www.ubuntugeek.com/unison-file-synchronization-tool.html

Y aquí está el tutorial: http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#tutorial

Dr. Xorile
fuente
4
rsync -avPr --ignore-existing /home/username/Research/ /path/to/other/folder/on/hdd/

Esto sincronizará y copiará solo aquellos datos que no existen en el /other/folder/on/hdd/

querida N
fuente
2

Estoy de acuerdo con las otras respuestas, puede usar en rsync en Terminal o las interfaces Grsync , luckyBackup , Conduit o el famoso Unison .

Otra gran aplicación es Krusader (un Administrador de archivos de doble panel para KDE), en el menú Herramientas puede encontrar "Sincronizar directorios", es muy útil.

En última instancia, puede instalar Wine e instalar otro excelente administrador de archivos de doble panel como Total Commander .

De todos modos, tiene muchas opciones y todas están presentes en el Centro de software de Ubuntu.

Raúl F. Castro S.
fuente
1

Recomendaría Conduit para una sincronización simple. Está disponible el sistema de software. Hace exactamente lo que buscas

Jasonwert
fuente
0

Existe una herramienta de shell bastante útil llamada rsnapshot - http://www.rsnapshot.org/ - utilidad de instantánea del sistema de archivos para hacer copias de seguridad de sistemas locales y remotos. que utiliza rsync y enlaces duros, lo que hace posible mantener múltiples copias de seguridad completas del sistema de archivos disponibles al instante. Solo hazlo sudo apt-get install rsnapshoty verificainfo rsnapshot

usuario1180249
fuente
0

Si desea una interfaz gráfica en un sistema que sea altamente configurable, pruebe FreeFileSync. Consulte, por ejemplo: http://linuxnorth.wordpress.com/2011/11/29/file-and-folder-synchronization/ En particular, desea la opción "Actualizar" para la sincronización que "copiará archivos nuevos o actualizados a carpeta derecha ", es decir, copie de la carpeta izquierda a la carpeta derecha en una pantalla de dos ventanas.

CentauroA
fuente