Usando rsync para respaldar

13

Actualmente realizo una copia de seguridad del contenido de un disco duro externo A al (1) eliminar todo en el disco duro externo de destino B y (2) copiar todo de A a B (en Finder). El disco duro externo solo contiene "datos básicos" (carpetas, imágenes, videos, documentos, etc.), nada extravagante.

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

Quiero automatizar esto. Después de algunas búsquedas, parece que puedo usar rsync. Entonces quiero automatizar esto usando rsyncpara 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 archivos / carpetas eliminados o archivos nuevos / carpetas; la idea es imitar lo que suelo hacer manualmente con Finder).

Llegué a este punto

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

Ahora el registro está lleno de archivos cuyo nombre empieza con .o ._ni siquiera ._.. ¿Son necesarios?

Pregunta

¿Cómo puedo copiar solo los archivos que importan, dejando atrás todos los que no importan? Por ejemplo, si tengo photo.pngesperaría copiar photo.png, no ._photo.pngo muchos archivos.

¿Qué --excludeo --exclude-frompuede ser utilizado con seguridad en un Mac? Una buena regla puede ser "simplemente copie todo lo que Finder muestre", que es lo que copiaría si pasara manualmente por todas las carpetas.

 Pregunta extra

Es -av --progress --deletesuficiente? ¿Estoy cometiendo un delito o arriesgando algunos datos? ¿Qué opciones usarías?

Por favor, respalde su respuesta con algunos argumentos, lo agradecería.

Estoy buscando una forma de automatizar rsyncque parezca bastante potente y de uso gratuito.

Manuel
fuente
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
bmike
En la estrategia descrita en el primer párrafo, ¿qué sucede si después de (1) - eliminar todo en B - le ocurre un problema grave a A? Podría perder el acceso a los datos en A y en su copia de seguridad anterior. Si el almacenamiento de su copia de seguridad tiene suficiente espacio, ¿qué tal si elimina la copia de seguridad solo después de que una copia de seguridad más reciente se haya completado con éxito?
Ricardo
1
El enlace de @ bmike a la conversación que se movió al chat está roto.
Merchako

Respuestas:

17

Para máxima seguridad, copie todo

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

Los archivos tienden a existir por una razón y a medida que el software cambia, también lo hará 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 que no se pierde nada.

El archivo de registro creado por rsyncestará técnicamente involucrado por la naturaleza misma de rsyncser una herramienta de línea de comando. Considere la posibilidad de presentar una salida ordenada, filtrada de metadatos, y tal vez incluso un código de color para que el usuario pueda verificar. Puede 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 último y copiar recursos de OS X

Con respecto a las rsyncbanderas, eche un vistazo a la pregunta La forma más rápida y segura de copiar datos masivos de un disco externo a otro . En esta pregunta, se usan y explican algunos indicadores adicionales:

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

En esta situación, Ese asegurará de que los tenedores de recursos y otras propiedades específicas de Mac se copien.

Es posible que desee --delete-afterevitar eliminar hasta que la copia se haya completado; tenga en cuenta que este enfoque requerirá potencialmente una unidad de destino dos veces el tamaño de la fuente.

Posibles exclusiones

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

Incluir archivos de puntos

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

Algún software mantiene las preferencias, configuraciones y otra información de valor en carpetas en la parte superior de la carpeta del usuario en carpetas prefijadas de puntos invisibles. La ejecución ls -la ~/revelará estas carpetas y archivos.

Si algún usuario usa o tiene software que a su vez usa software de control de versiones, asegúrese de hacer una copia de seguridad de los archivos de puntos. Software como subversion y git almacenan información crítica dentro de sus carpetas de puntos. Estas carpetas ocultas pueden estar dispersas en su sistema de archivos, donde sea que se extraiga un proyecto.

Spotlight y acceso a disco

Spotlight es el servicio de búsqueda de OS X. Spotlight utiliza el mdworkerproceso para indexar y actualizar el catálogo de búsqueda. Si le preocupa la posible corrupción del disco o las copias lentas, deshabilitarmdworker mientras se ejecuta rsyncpuede ayudar. Personalmente, dejo Spotlight en ejecución mientras realizo grandes rsynctransferencias.

Graham Miln
fuente
3
La opción más segura es copiar todo, incluidos los archivos invisibles de metadatos. Pero ese mismo enlace de Carbon Copy Cloner dice que hay ciertos archivos que se crean automáticamente, por lo que incluso puede corromperlos si los copia rsync.
Manuel
1
Podría agregar un ejemplo completo para futuros lectores. Encontré dos fuentes, una y dos (más la tercera que vinculaste); Los dejo aquí para referencia futura.
Manuel
1
"Hay buenas razones para hacer una copia de seguridad de los archivos que comienzan con puntos": ¡sí! Estos archivos están ocultos (desde el Finder for the dummies) pero la mayoría de las veces son archivos muy importantes.
dan
1
Los Ey --delete-afterson los puntos clave que hacen que esta respuesta sea ganadora.
dan
1
@danielAzuelos A partir de -E, en las versiones más nuevas hay -Xalgunas que veo recomendadas en algunos lugares, ¿cuál es la correcta? O los dos? Me gustaría un pseudocompleto actualizado que cubra la mayoría de las preocupaciones generales. ¿Copiar archivos de Spotlight sería más fácil y rápido que dejar que se generen? ¿Cómo puedo detener Spotlight para que no moleste mientras tanto? ¿Qué pasa caffeinatecon el proceso? O puede ser si se trata solo de una lista de respaldo que no sea indexable por Spotlight, mucho menos preocupaciones, etc. Muchas de estas preguntas han sido respondidas con seguridad.
Manuel
5

Si está utilizando la rsyncversió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>

iluminar
fuente
--protect-decmpfsya no está disponible a partir de 3.1.3, consulte github.com/Homebrew/homebrew-core/pull/23415 .
user74686
4

Aconsejaría no podar los metadatos durante una copia de seguridad, en particular los archivos de puntos, por ejemplo ._$filename, sin embargo, si realmente desea excluir los archivos de puntos de su rsynccomando, agréguelo --exclude '.*'.

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B
usuario3439894
fuente
Esto es bueno. No estaba seguro de si eliminar todos los archivos de puntos sería problemático (por cierto, ¿hay alguna diferencia entre '.*'y '/.*'?). No creo que Finder las copie todas, puede que solo estén asociadas. En ese caso, preferiría excluir solo aquellos que son innecesarios (por ejemplo, .DS_Store). Y sí, aquellos que pueden ser importantes, pero que no quiero tener en mi registro, puedo filtrarlos con expresiones regulares.
Manuel
1
Lo que el Finder copia no está documentado, y esta es la fuente del problema de todos al crear una política de respaldo. Debe mantener una copia de todos los archivos si desea una copia de seguridad que pueda usarse exactamente en lugar del Adisco.
dan
@danielAzuelos Que no es el caso, en caso de que el disco duro principal A muera, entonces compraré un tercer disco duro C, copiaré del disco duro B al disco duro C y probablemente comience a usar uno de B o C. Digo otra vez, que este no es el tipo de copia de seguridad que uno necesita usar como lo hace SuperDuper. Es solo que mis fotos son mejores en dos lugares en lugar de solo uno.
Manuel
4

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

Y, por cierto, si uno está interesado en Time Machine como copias, hay rsnapshot. Y también hay Unison para sincronizaciones bidireccionales. Además, en realidad hay algunas GUI, como Backup Utility y arRsync ; no 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 tanto, no es necesario preocuparse demasiado . 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 archivo .png, todo lo demás no se descarga sino que se genera automáticamente ).

Aquí hay una lista desestructurada de pensamientos que es posible que desee tener en cuenta

  • Si desea asegurarse de que su computadora portátil no se vaya a dormir, es posible que desee realizar caffeinateel proceso caffeinate -s rsync -av .... Tomado de aquí .

  • Si usted está haciendo copias locales, como en mi caso, o incluso si la conexión a Internet no es demasiado lento, se debe no utiliza -zla opción (de compresión), y el uso -W(archivo completo de transferencia, en lugar de transferencias delta, lo que es un defecto cuando local) y probablemente lo use --inplacepara hacer transferencias rápidas. Tomado de aquí .

  • Puede usarlo --delete-afterpara que cualquier archivo se transfiera primero y luego se mueva al destino (y elimine el original) y sea más seguro que eliminarlo 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 miedos con SuperDuper !, si necesita detener una transferencia, recibirá el mensaje "Dejará el disco duro en un estado desconocido ...".

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

  • Hay -P(que es igual --partialy --progress) que dejará allí los archivos transferidos a mitad de camino para que pueda continuar cuando reinicie el proceso (si por alguna razón no puede finalizar la sincronización de inmediato).

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

  • Otras opciones que se utilizan en todas aquellas 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 mirarlos.

Para mí, se ve 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, podría incluir {*.jpg,*.png,*.mp4,*.txt,*.pdf,…}y nadie diría "también necesita archivos del sistema", pero como no quiero buscar para obtener todo el tipo de archivo posible del que tengo archivos, prefiero excluirlo. Y hay cosas que no solo pueden ser, sino que parecen convenientes de excluir.

Encontré algunos enlaces, toma lo que quieras:

  1. https://bombich.com/kb/ccc4/some-files-and-folders-are-automatically-excluded-from-backup-task

  2. https://gist.github.com/tvwerkhoven/4541989

  3. https://github.com/necolas/dotfiles

  4. https://gist.github.com/shkm/5531679

  5. http://www.hackurmac.com/2014/08/backing-up-and-restoring-your-hackintosh.html

  6. https://github.com/jedda/Counterpart

  7. http://alanwsmith.com/rsync-exclude-list-for-mac-osx

Y a partir de ahí, probablemente podría obtener lo que es seguro o sensato para ignorar. Aquí está la lista completa (acabo de eliminar 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
Manuel
fuente
3

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

Lo recomiendo mucho, pero con algunas modificaciones. Como herramienta de respaldo, es genial, pero como herramienta de archivo se cae un poco plana. Sí, copia todo, pero no obtienes versiones de todo, siempre obtienes solo las últimas versiones.

Utilicé esta guía http://www.mikerubel.org/computers/rsync_snapshots/ como punto de partida. Lee toda la página. Hace un gran trabajo al explicar 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 hoy. Tengo que amar a Unix.

sevis127
fuente
1
Gracias. En cualquier caso, quería cubrir las consideraciones especiales que uno podría tener bajo Mac OS X. Realmente no quería solo una guía rsync. En cualquier caso, buen enlace, que cubre mucho rsyncpero no es a partir de hoy una herramienta para hacer exactamente eso: rsnapshot.
Manuel