Uso de Rsync para hacer una copia de seguridad en una unidad externa

17

Estoy comprando un disco duro externo para hacer una copia de seguridad de las computadoras de mi casa (¡por fin!). Espero usar rsync. He visto un ejemplo que hace (o parece hacer) exactamente lo que quiero. Algo como esto:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Sin embargo, al mirar la documentación rsync y los ejemplos, etc., las cosas comenzaron a parecer MUCHO más complicadas que eso. Redes y demonios y jerga, ¡Dios mío!

Supongo que ninguna de esas cosas es necesaria siempre que solo esté sincronizando desde una computadora a un disco externo conectado a FireWire. ¿Me equivoco al asumir eso? ¿Las cosas realmente serán más complicadas que ese comando inocuo?

Stalepretzel
fuente
Duplicado
jldugger

Respuestas:

10

Rsync funciona bien en unidades locales. Sin embargo, si detecta rutas locales, entra automáticamente en modo de archivo completo que no copia los diferenciales, sino que simplemente copia el archivo de origen sobre el archivo de destino. Sin embargo, Rsync seguirá ignorando los archivos que no han cambiado en absoluto. Cuando el ancho de banda entre el origen y el destino es alto (como dos discos locales), esto es mucho más rápido que leer ambos archivos y luego copiar solo los bits modificados.

kbyrd
fuente
2
s / Sin embargo / Afortunadamente / cuando los archivos son locales, leer ambos y hacer toda la diferencia para escribir lo nuevo con partes de ambos (leerlos de nuevo) es mucho más trabajo que solo leer la fuente, escribir el destino.
Javier
No sabía si debería entrar en eso en mi respuesta. Lo agregaré ahora.
kbyrd
31

Uso rsync con las siguientes banderas fácilmente memorables como 'glop' y 'trunc' y 'v'.

rsync -gloptrunc $srcdir $dstdir

Una breve guía:

  • g - preservar la información de propiedad del grupo
  • l - copiar enlaces simbólicos como enlaces simbólicos
  • o - preservar la información del propietario
  • p - preservar permisos
  • t - preservar las marcas de tiempo
  • r - recurse a través de directorios
  • u - actualizar, omitir los archivos más nuevos
  • [n] - no, no hagas esto, haz una carrera en seco
  • c - suma de comprobación, intente sumas de comprobación en bloques de archivos cuando sea posible (*)
    nota: en los sistemas de archivos locales, esto se anula y en su lugar se copian archivos completos.
  • v - detallado

Siempre ejecuto lo anterior para asegurarme de que funciona, luego elimino la bandera 'n' que una vez que estoy satisfecho con los resultados.

Las características clave de las combinaciones anteriores:

  • Lo ejecuto en AMBAS direcciones entre dos (o más) servidores, sincronizando así en AMBAS direcciones. Actualizas lo que creas que es el maestro en ese momento.
  • Permite que cualquiera sea el maestro, con la importante advertencia de que si desea eliminar algo, debe eliminarlo en ambos para asegurarse de que realmente desapareció, de lo contrario, vuelve.

Utilizo esto para mantener dos máquinas sincronizadas, o para mantener las subdirecciones sincronizadas (como hacer una copia de seguridad en una unidad USB).

Como una de las otras publicaciones indicadas anteriormente, la 'suma de verificación' en realidad puede ser desactivada si se trata de unidades locales.

En algunos casos raros, tuve que agregar parámetros adicionales para dar cuenta de los cambios en las cuentas de inicio de sesión en máquinas remotas, cambiar puertos e incluso especificar dónde vive 'rsync' en el host remoto ... pero esos no son directamente aplicables a su pregunta.

ericslaw
fuente
3
¿El indicador -a a rsync no hace todo lo anterior?
Rory el
2
No soy un gran admirador del uso de indicadores 'meta' cuando no estoy seguro de lo que hacen. La página de administración de rsync indica que '-a' en realidad es -rlptgoD en mi casilla, que omite 'u' y 'v' pero incluye 'D'. De ellos, parece que, para mí, la adición de 'u' es la única diferencia clave.
ericslaw
¿Cómo lo obligo a duplicar de origen a destino (eliminando cualquier cosa en el destino que no esté en el origen), en lugar de copiar bidireccionalmente?
Gabriel Staples
1
Parece que necesitarías usar rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir. El --deletedice que elimine cualquier cosa en el destino que no esté en la fuente, y --delete-excludeddice que también elimine los archivos excluidos en el destino que normalmente no serían rastreados o copiados. Si lo usa --delete-excluded, técnicamente no necesita usarlo también --delete, pero está bien usarlos de todos modos. Los detalles se encuentran en las páginas de manual aquí: linux.die.net/man/1/rsync .
Gabriel Staples
Nota: para el uso general de rsync, también he escrito este tutorial para mí, así que puedo consultarlo según sea necesario: Cómo usar rsync
Gabriel Staples
4

Nada de eso es necesario, puedes usar rsync sin ningún demonio o cualquier otro tipo de configuración ¡SOLO BIEN!

Solo usa el comando rsync y listo.

OldJim
fuente
2

A juzgar por la ruta en su comando rsync, ¿estaría en lo cierto al pensar que está utilizando Mac OS X?

Personalmente, optaría por usar Time Machine (si está usando Leopard) o Carbon Copy Cloner ( http://www.bombich.com/software/ccc.html ) que usa rsync.

Mucho más fácil que tratar de corregir su propio guión. Una ventaja es que Time Machine y CCC le proporcionarán copias de seguridad incrementales.

Steve Folly
fuente
2

Parece que el ejemplo que usó funcionará bien para las copias de seguridad.

Sin embargo, una cosa que quizás desee considerar al usar rsync es utilizar la opción --link-dest. Esto le permite mantener múltiples copias de seguridad, pero usar enlaces duros para cualquier archivo sin cambios, haciendo que todas las copias de seguridad ocupen espacio de forma incremental. Un ejemplo de uso sería:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

Esto supone que tiene una copia de seguridad fechada para el 12 de junio y desea crear una nueva el 13 de junio. Es posible que desee omitir la opción -v si no desea una impresión de cada archivo.

marca
fuente
1
rsnapshot es un sistema de respaldo que usa link-dest como usted describe para mantener los respaldos de la versión completa de manera eficiente en el espacio.
Rory el
1

Realmente depende de si estás ejecutando bases de datos o no. Rsync tomará una instantánea de cada archivo e ignorará cualquier escritura que intervenga. Si desea hacer una copia de seguridad de una base de datos, debe considerar configurar un filtro de ignorar y ejecutar herramientas de volcado de base de datos antes del rsync.

jldugger
fuente
1

Su comando tal como está escrito debería funcionar, sin embargo, es posible que desee ver un programa llamado rsnapshot que se basa en rsync y mantiene varias versiones de archivos para que pueda volver y mirar las cosas como estaban la semana pasada o el mes pasado. La configuración es bastante fácil y es realmente buena para la optimización del espacio, por lo que, a menos que tenga mucha rotación, no ocupará mucho más espacio que una sola copia de seguridad.

Catherine MacInnes
fuente
1

No mencionaste tu sistema operativo. Asumiendo que es un sistema operativo basado en * nix, su comando es bueno.

Sin embargo, si una o ambas unidades tienen el formato NTFS, se accede desde * nix o incluso desde Windows usando Mobaxterm / cygwin, entonces la funcionalidad incremental rsync no funcionaría bien con rsync -a (archive flag)

Si las unidades NTFS están involucradas, puede usar:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Descargue el cliente Mobaxterm ssh para tener la funcionalidad rsync en Windows.

Aquí hay más información sobre el uso de rsync con unidades NTFS

Raman Kathpalia
fuente
0

Intenté usar rsync para la copia de seguridad, pero terminó siendo un desastre. rsync es más adecuado para 'sincronizar' que para hacer una copia de seguridad. Y va para siempre comparar archivos grandes.

Investigué un poco y probé varios (básicamente probando a todos desde la copia de seguridad de búsqueda de apt-cache en ubuntu).

Finalmente, terminé con ' backup2l - herramienta de copia de seguridad / restauración de bajo mantenimiento', es fácil. Me gusta la forma en que gestiona la planificación y la rotación (en niveles). Lo ejecuto siempre que tengo mi unidad externa USB conectada desde la línea de comandos, pero también puede automatizarla.

chmeee
fuente
0

Prueba dirvish para hacer la copia de seguridad. http://www.dirvish.org/
Utiliza los enlaces duros de rsync en las llamadas bóvedas. Puede conservar la mayor parte de los volcados antiguos que pueda tomar el disco USB. O configúrelo de forma automatizada.

Una vez que comprenda la idea de dirvish, es más conveniente usarlo que rsync con todas sus opciones.

Michèle
fuente
rsnapshot es similar a dirvish
Rory el
0

Encuentro una solución para una computadora con Windows: http://www.itefix.no/i2/node/10650

Para copiar D: \ partición a una unidad externa K: \

rsync -aE --delete --progress /cygdrive/d/* /cygdrive/k


fuente