¿Cómo copiar eficientemente solo archivos modificados desde un disco a un USB externo?

¿Cómo copiar eficientemente solo archivos modificados desde un disco a un USB externo?

Tengo un directorio llamado my_projects_linuxdentro del sistema de archivos de Ubuntu, que contiene todo mi trabajo de muchos años. El directorio contiene archivos, subdirectorios, etc.

Para realizar copias de seguridad, ocasionalmente copio este directorio y todo su contenido en un disco duro externo.

Por lo tanto, el contenido de mi disco externo se ve así:

/mounted_drive/my_projects_linux
/mounted_drive/my_projects_windows  # the same idea to backup Windows work

Por lo tanto, lo que estoy buscando es un comando que:

  1. Funcionaría como

    cp /home/my_projects_linux /mounted_drive/my_projects_linux
    

    Debería reemplazar archivos antiguos, subdirectorios, archivos dentro de subdirectorios, etc. en el disco externo por el nuevo contenido de mi PC.

  2. Se rápido. Sólo debe copiar archivos modificados o recién creados. Dado que el tamaño my_projects_linuxes >50 GB, copiar todo lleva más de una hora, lo cual es demasiado lento. En realidad, a menudo sólo han cambiado unos pocos MB desde la última copia de seguridad, por lo que, en teoría, una copia se puede realizar mucho más rápido.

¿Como hacer eso?

Busqué en Google que cp con la -ubandera posiblemente podría satisfacer mis necesidades. ¿Funcionaría (por ejemplo, manejaría correctamente subdirectorios de subdirectorios)?

Además, ¿almacenar el sistema de archivos en un disco externo es una forma adecuada de realizar una copia de seguridad o existe una forma más elegante? Por ejemplo, ¿usar una nube? Tenga en cuenta que la forma más elegante debería ser sencilla, ya que de lo contrario no superará la facilidad de ejecutar un comando de shell.

Respuesta1

Estás describiendo rsyncpara qué fue diseñado. De man rsync:

   Rsync  finds  files  that  need to be transferred using a "quick
   check" algorithm (by default) that looks  for  files  that  have
   changed  in  size  or in last-modified time.  Any changes in the
   other preserved attributes (as requested by options) are made on
   the  destination  file  directly  when the quick check indicates
   that the file’s data does not need to be updated.

También hay muchas tonterías sobre la creación de redes, pero también es feliz hacerlo localmente.
Básicamente, todo lo que necesitas es:

rsync -rtv /home/my_projects_linux /mounted_drive/my_projects_linux

Hay un montón de opciones disponibles pero -rtvse sincronizaránrecursivamente, manteniendo eltcódigos ime iguales, aunque sonverboso sobre lo que está haciendo.

Respuesta2

Para responder a su segunda pregunta, una forma más elegante de realizar una copia de seguridad es rdiff-backup.

rdiff-backup realiza una copia de seguridad de un directorio en otro, posiblemente a través de una red. El directorio de destino termina siendo una copia del directorio de origen, pero las diferencias inversas adicionales se almacenan en un subdirectorio especial de ese directorio de destino, por lo que aún puedes recuperar archivos perdidos hace algún tiempo. La idea es combinar las mejores características de un espejo y una copia de seguridad incremental. rdiff-backup también conserva subdirectorios, enlaces físicos, archivos de desarrollo, permisos, propiedad de uid/gid, tiempos de modificación, atributos extendidos, ACL y bifurcaciones de recursos.

Y si realmente quieres utilizar la nube: uso CrashPlan con una suscripción paga. Entonces túnuncaYa no tengo que pensar en las copias de seguridad manuales.

Respuesta3

Sé que esta pregunta ya tiene una respuesta aceptada. Sin embargo, quería agregar una solución GUI multiplataforma porque veo que también usas Windows. Yo uso para los mismos finessincronización de archivos gratuitos. También es FLOSS.

La configuración es absolutamente intuitiva y podrás guardar diferentes trabajos de sincronización.

También hay un ppa, aunque por el momento no incluye la última versión 14.04. Para instalar a través de ppa:

sudo apt-add-repository ppa:freefilesync/ffs
sudo apt-get update

información relacionada