Tengo un directorio llamado my_projects_linux
dentro 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:
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.
Se rápido. Sólo debe copiar archivos modificados o recién creados. Dado que el tamaño
my_projects_linux
es >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 -u
bandera 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 rsync
para 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 -rtv
se 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