Usando rsync para respaldar

10

Actualmente hago una copia de seguridad del contenido de un disco duro externo A (1) eliminando todo en el disco duro externo de destino B y (2) copiando todo desde A a B (en el Finder). El disco duro externo solo contiene "datos básicos" (carpetas, imágenes, videos, documentos, etc.), nada sofisticado / raro.

Pero con todas las increíbles herramientas gratuitas que existen por ahí, no pude encontrar una decente para respaldar (se aceptan sugerencias).

Quiero automatizar esto. Después de algunas búsquedas, parece que puedo usar rsync . Luego quiero automatizar esto usando rsync para evitar copiar archivos que ya están en el disco duro de destino (por supuesto, si se ha realizado un cambio, quiero actualizar el archivo / carpeta; lo mismo con los archivos / carpetas eliminados o nuevos archivos / carpetas; la idea es imitar lo que normalmente hago manualmente con el Finder).

Llegué a este punto

rsync -av --progress --delete /Volumes/A/ /Volumes/B

Ahora el registro está lleno de archivos cuyo nombre comienza con . o ._ o incluso ._. . ¿Son necesarios?

Pregunta

¿Cómo puedo copiar solo los archivos que importan, dejando todos los que no importan? Por ejemplo, si tengo photo.png esperaría copiar photo.png , no ._photo.png o muchos archivos.

¿Qué --exclude o --exclude-from se puede usar de manera segura en una Mac? Puede que una buena regla sea que "simplemente copie todo lo que muestre el Finder", que es lo que copiaría si pasara manualmente por todas las carpetas.

pregunta extra

¿Es -av --progress --delete suficiente? ¿Estoy cometiendo un crimen o arriesgando algunos datos? ¿Qué opciones utilizarías?

Por favor, respalda tu respuesta con algunos argumentos, te lo agradecería.

Estoy buscando una forma de automatizar rsync que parece bastante potente y de uso gratuito.

    
pregunta Manuel 24.01.2016 - 12:37

5 respuestas

16

Para la máxima seguridad, copia todo

La opción más segura es copiar todo , incluidos los archivos de metadatos invisibles.

Los archivos tienden a existir por una razón y, a medida que el software cambia, también lo harán la existencia, el propósito y el contenido de estos archivos de metadatos. Copiar todo reducirá la carga de mantenimiento y ofrecerá la tranquilidad de no perder nada.

El archivo de registro creado por rsync estará técnicamente involucrado por la naturaleza misma de que rsync es una herramienta de línea de comandos. Considere la posibilidad de presentar una salida ordenada, metadatos filtrados y tal vez incluso códigos codificados por colores para que el usuario los compruebe. Podría hacer esto con una amplia gama de herramientas de scripting e idiomas. Haga más preguntas aquí en Ask Different y en StackOverflow Si necesita ayuda con este enfoque.

Eliminar el último & Copiar recursos de OS X

Con respecto a las banderas rsync , eche un vistazo a la pregunta La forma más rápida y segura de copiar datos masivos de una unidad externa a otra . En esta pregunta, se usan y explican algunos indicadores adicionales:

sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName

En esta situación, E garantizará que se copien las bifurcaciones de recursos y otras propiedades específicas de Mac.

Es posible que desee considerar --delete-after para evitar eliminar hasta que la copia se haya completado; tenga en cuenta que este enfoque potencialmente requerirá una unidad de destino que sea el doble del tamaño del origen.

Posibles exclusiones

Una respuesta a una pregunta relacionada, ¿Cómo puedo omitir FCPX Render Files de una copia de seguridad de Time Machine? , proporcioné un enlace útil de archivos y carpetas OS X que pueden ser excluidos de la mayoría de las copias de seguridad . Este enlace proporciona una lista práctica de patrones de archivos, carpetas y rutas que podría excluir.

Incluir archivos de puntos

Hay buenas razones para hacer copias de seguridad de archivos que comienzan con puntos, .* de archivos coincidentes.

Algunos programas mantienen las preferencias, configuraciones y otra información de valor en las carpetas en la parte superior de la carpeta del usuario en las carpetas con prefijo de punto invisible. La ejecución de ls -la ~/ revelará estas carpetas y archivos.

Si algún usuario usa o tiene un software que a su vez usa un software de control de versiones, asegúrese de hacer copias de seguridad de los archivos de puntos. Software como subversion y git son críticos para la tienda Información dentro de sus carpetas de puntos. Estas carpetas ocultas pueden estar dispersas en su sistema de archivos, donde quiera que un proyecto esté desprotegido.

Spotlight y acceso a disco

Spotlight es el servicio de búsqueda de OS X. Spotlight utiliza el proceso mdworker para indexar y actualizar el catálogo de búsqueda. Si le preocupa la posible corrupción del disco o las copias lentas, inhabilite mdworker mientras ejecutar rsync puede ayudar. Personalmente, dejo que Spotlight se ejecute mientras se ejecutan grandes transferencias de rsync .

    
respondido por el Graham Miln 24.01.2016 - 16:53
3

No recomendaría la eliminación de metadatos durante una copia de seguridad, especialmente los archivos de puntos , por ejemplo. ._$filename , sin embargo, si realmente desea excluir los archivos de puntos de su comando rsync , añada --exclude '.*' a él.

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B
    
respondido por el user3439894 24.01.2016 - 16:33
3

Si está utilizando rsync versión 3.0.6 según Carbon Copy Cloner o 3.1.2 según Homebrew, puede seguir los argumentos de Carbon Copy Cloner:

rsync -A -X -H -p --fileflags --force-change -l -N -rtx --protect-decmpfs --numeric-ids -go --delete-during --backup --backup-dir=</PATH/TO/STICK/BACKUP_when_using_delete> --protect-args <SRC>/ <DEST>

    
respondido por el ylluminate 29.08.2017 - 21:51
2

He usado rsync para copias de seguridad en varios trabajos, y lo uso en casa.

Lo recomiendo altamente, pero con algunas modificaciones. Como herramienta de copia de seguridad, es genial, pero como herramienta de archivado cae un poco plana. Sí, lo copia todo, pero no obtienes versiones de todo, siempre obtienes las últimas versiones solamente.

Utilicé esta guía enlace como punto de partida. Lea toda la página. Hace un gran trabajo explicando las opciones y describe cómo puede implementar copias de seguridad incrementales. Y sorprendentemente, el artículo tiene más de 10 años, pero todavía es aplicable en la actualidad. Tengo que amar a Unix.

    
respondido por el sevis127 01.02.2016 - 11:18
2

No estoy completamente satisfecho con las respuestas actuales, pero intentaré cubrir aquí un poco de las posibilidades que he visto en la web tratando de encontrar una buena configuración para rsync .

Y, por cierto, si uno está interesado en las copias de tiempo de Time Machine, hay rsnapshot . Y también hay Unison para sincronizaciones de dos vías. Además, en realidad hay algunas GUI, como Utilidad de copia de seguridad y arRsync ; no es exactamente lo que estaba buscando pero podrían hacer el trabajo por alguien.

Primero, mi única intención era duplicar fotos y videos, por lo que no se necesitaba una copia exacta, por lo que no hay necesidad de preocuparme demasiado por . De hecho, la mayoría de mis dudas eran si podía excluir todo (lo mismo que sucedería si, por ejemplo, descargué una foto de Internet, solo descargo un .png, todo lo demás no se descarga pero se genera automáticamente ).

Aquí hay una lista no estructurada de pensamientos que tal vez quieras tener en cuenta

  • Quiero garantizar que su computadora portátil no se duerma, es posible que desee caffeinate el proceso caffeinate -s rsync -av ... . Tomado de aquí .

  • Si está haciendo copias locales, como en mi caso, o incluso si la conexión a internet no es demasiado lenta, debería no usar la opción -z (compresión) y usar -W (transfiere el archivo completo, en lugar de transferencias delta; este es el valor predeterminado cuando es local) y probablemente use --inplace para hacer transferencias rápidamente. Tomado de aquí .

  • Puede usar --delete-after para que cualquier archivo se transfiera primero y luego se mueva en el destino (y se elimine el original) y es más seguro que eliminar antes de la transferencia o durante la transferencia.

  • Puede detener la transferencia presionando ctrl + C , y se detendrá limpiamente. Tomado de aquí . ¡Este fue uno de mis temores con SuperDuper! Si necesitas detener una transferencia, aparece el mensaje "Dejarás el disco duro en un estado desconocido ...".

  • En las versiones recientes hay --info=progress2 que agrega aún más detalles a -v .

  • Hay -P (que equivale a --partial y --progress ) que dejará los archivos transferidos a la mitad para que pueda continuar cuando reinicie el proceso (si por alguna razón no puede finalizar la sincronización al mismo tiempo).

  • Uno podría estar interesado en detener Spotlight o TimeMachine antes de hacer la copia, y volver a activarlos después de la transferencia. E incluso deshabilitar Spotlight para el disco externo.

  • Otras opciones utilizadas en todas esas referencias incluyen -x (o --one-file-system ), -E ( --executability ), -H ( --hard-links ), -X ( --xattrs ) , -A ( --acls ), y --sparse , --hfs-compression , --protect-decmpfs . Es posible que desee verlos.

Para mí, parece un comando básico (podría usar más opciones, pero esto es suficiente para un ejemplo):

caffeinate -s rsync -av --delete-after --progress --stats --exclude-from 'excludefile.txt' \
  "/Volumes/SrcHDD/" "/Volumes/DstHDD" # note the trailing slash / after the source

Ahora, en mi caso, solo podría incluir {*.jpg,*.png,*.mp4,*.txt,*.pdf,…} y nadie diría "usted también necesita archivos del sistema", pero como no quiero buscar para obtener todos los tipos de archivo posibles, prefiero excluir . Y hay cosas que no solo pueden ser, sino que parecen convenientes para excluir.

Encontré algunos enlaces, toma lo que quieras:

  1. enlace

  2. enlace

  3. enlace

  4. enlace

  5. enlace

  6. enlace

  7. enlace

Y desde allí, probablemente puedas obtener lo que es seguro o sensato ignorar. Aquí está la lista completa (acabo de eliminar los duplicados)

.HFS+ Private Directory Data*
/.journal
/.journal_info_block
.AppleDouble
.AppleDB
/lost+found

.metadata_never_index
.metadata_never_index_unless_rootfs
/.com.apple.timemachine.donotpresent
.VolumeIcon.icns
/System/Library/CoreServices/.disk_label*
/TheVolumeSettingsFolder

.DocumentRevisions-V100*
.Spotlight-V100
/.fseventsd
/.hotfiles.btree
/private/var/db/systemstats

/private/var/db/dyld/dyld_*
/System/Library/Caches/com.apple.bootstamps/*
/System/Library/Caches/com.apple.corestorage/*
/System/Library/Caches/com.apple.kext.caches/*

/.com.apple.NetBootX

/Volumes/*
/dev/*
/automount/*
/Network/*
/.vol/*
/net

/private/var/folders/zz/*
/private/var/vm/*
/private/tmp/*
/cores/*

.Trash
.Trashes

/Backups.backupdb
/.MobileBackups
/.MobileBackups.trash
/.MobileBackups.trash

Library/Mobile Documents.*
.webtmp

/Library/Caches/CrashPlan
/PGPWDE01
/PGPWDE02
/.bzvol
/Library/Application Support/Comodo/AntiVirus/Quarantine
/private/var/spool/qmaster
$Recycle.Bin
Saved Application State
Library/Preferences/ByHost/com.apple.loginwindow*

.AppleDesktop
.com.apple.timemachine.supported
Network Trash Folder
/Library/Caches/*
/private/var/spool/postfix/*
$RECYCLE.BIN
/stuff/*
/afs/*
/private/var/run/*
/Previous Systems.localized
/tmp/*
.dbfseventsd
.DS_Store
.PKInstallSandboxManager
.SymAV*
.symSchedScanLockxz
.TemporaryItems
Desktop DB
Desktop DF
hiberfil.sys
pagefile.sys
Recycled
RECYCLER
System Volume Information
Temporary Items
Thumbs.db
AUTORUN.INF
Autorun.inf
autorun.inf
    
respondido por el Manuel 02.02.2016 - 02:32

Lea otras preguntas en las etiquetas