Actualmente hago una copia de seguridad del contenido de un disco duro externo A (1) borrando todo en el disco duro externo de destino B y (2) copiando todo de A a B (en Finder). El disco duro externo solo contiene "datos básicos" (carpetas, imágenes, videos, documentos, etc.), nada extravagante/raro.
Pero con todas las increíbles herramientas gratuitas que existen, no pude encontrar una decente para hacer una copia de seguridad (se aceptan sugerencias).
Quiero automatizar esto. Después de algunas búsquedas, parece que puedo usar rsync
. Entonces 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 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 comienza con .
o ._
o incluso ._.
. ¿Son necesarios?
¿Cómo puedo copiar solo los archivos que importan, dejando atrás 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 forma segura en una Mac? Puede ser una buena regla "simplemente copiar cualquier cosa que muestre Finder", que es lo que copiaría si pasara manualmente por todas las carpetas.
¿Es -av --progress --delete
suficiente? ¿Estoy cometiendo un delito o arriesgando algunos datos? ¿Qué opciones usarías?
Por favor, respalda tu respuesta con algunos argumentos, te lo agradecería.
Estoy buscando una forma de automatizar rsync
que parezca bastante poderosa y de uso gratuito.
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 cambia el software, 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 saber que no se pierde nada.
El archivo de registro creado por rsync
estará técnicamente involucrado por la naturaleza misma de rsync
ser una herramienta de línea de comandos. Considere presentar una salida ordenada, filtrada por metadatos y tal vez incluso codificada por colores para que el usuario la verifique. Puede hacer esto con una amplia gama de lenguajes y herramientas de secuencias de comandos. Haga más preguntas aquí en Ask Different y en StackOverflow si necesita ayuda con este enfoque.
En cuanto a las rsync
banderas, echa 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 algunas banderas adicionales:
sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName
En esta situación, E
se asegurará de que se copien las bifurcaciones de recursos y otras propiedades específicas de Mac.
Es posible que desee considerar --delete-after
evitar la eliminación hasta que se haya completado la copia; tenga en cuenta que este enfoque requerirá potencialmente una unidad de destino del doble del tamaño de la fuente.
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 vínculo útil de archivos y carpetas de OS X que se pueden excluir 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.
Hay buenas razones para hacer una copia de seguridad de los archivos que comienzan con puntos, .*
archivos coincidentes.
Algunos programas mantienen preferencias, configuraciones y otra información de valor en carpetas en la parte superior de la carpeta del usuario en carpetas prefijadas con 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 desproteja un proyecto.
Spotlight es el servicio de búsqueda de OS X. Spotlight utiliza el mdworker
proceso para indexar y actualizar el catálogo de búsqueda. Si le preocupa la posible corrupción del disco o las copias lentas, la desactivaciónmdworker
durante la ejecución rsync
puede ayudar. Personalmente, dejo Spotlight ejecutándose mientras ejecuto grandes rsync
transferencias.
rsync
.rsync
su uso.E
y --delete-after
son los puntos clave que hacen de esta respuesta una ganadora.~/
. En mi caso, creo que estoy bastante seguro --ignore ' .*'
, ya que sería exactamente lo mismo que si descargara una foto de Internet (no descargo archivos auxiliares, esos se generan desde la computadora). Ahora quería argumentos que dijeran: “sí te imaginas que descargas de internet una foto, pero sería mucho si hicieras X”.-E
, en las versiones más nuevas hay las -X
que veo recomendadas en algunos lugares, ¿cuál es la correcta? ¿O ambos? Me gustaría un pseudo-completo actualizado que cubra la mayoría de las preocupaciones generales. ¿Sería más fácil y rápido copiar archivos de Spotlight que dejar que se generen? ¿Cómo puedo detener Spotlight para que no se estropee mientras tanto? ¿Qué pasa caffeinate
con el proceso? O puede ser que si es solo una lista de respaldo, no sea indexable por Spotlight, mucho menos preocupaciones, etc. Muchas de estas preguntas han sido respondidas con certeza.rsync
en Mac OS X", todas esas son solo ideas que uno podría responder.-E
sincronizar con una unidad en mi Raspberry Pi, aparece el error rsync: on remote machine: --extended-attributes: unknown option
. Supongo que esto significa que solo puedo usar -E
localmente (o al menos si tengo macOS como origen y destino).No estoy completamente satisfecho con las respuestas actuales, pero intentaré cubrir aquí algunas de las posibilidades que he visto en la web tratando de encontrar una buena configuración para rsync
.
Y, por cierto, si a uno le interesan las copias de Time Machine, ahí está rsnapshot
. Y también está Unison para sincronizaciones bidireccionales. Además, en realidad hay algunas GUI, como Backup Utility y arRsync ; no es exactamente lo que estaba buscando, pero podrían hacer el trabajo para 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 excluirlo todo (lo mismo que pasaría si, digamos, descargo una foto de internet, solo descargo un .png, todo lo demás no se descarga sino que se autogenera ).
Aquí hay una lista no estructurada de pensamientos que quizás desee tener en cuenta.
Si desea asegurarse de que su computadora portátil no entre en modo de suspensión, es posible que desee realizar 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, no debe usar la -z
opción (compresión) y usar -W
(transferir todo el archivo, en lugar de transferencias delta; esto es predeterminado cuando es local) y probablemente se use --inplace
para hacer transferencias rápidas. Tomado de aquí .
Puede usar --delete-after
para que cualquier archivo se transfiera primero y luego se mueva al destino (y elimine el original) y es más seguro que eliminar antes de la transferencia o durante la transferencia.
Puede detener la transferencia presionando ctrl + Cy se detendrá limpiamente. Tomado de aquí . ¡Este era uno de mis temores con SuperDuper!, si necesitas detener una transferencia, aparece el mensaje "Dejarás el disco duro en un estado desconocido...".
En versiones recientes, hay una --info=progress2
que agrega aún más detalles a -v
.
Hay -P
(que es igual a --partial
y --progress
) que dejará los archivos transferidos a la mitad allí 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 desactivar 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 mirarlos.
Para mí, parece un comando básico (podría usar más opciones, pero esto es suficiente como 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 simplemente incluir {*.jpg,*.png,*.mp4,*.txt,*.pdf,…}
y nadie diría "también necesita archivos del sistema", pero dado que no quiero buscar para obtener todos los tipos de archivo posibles de los que tengo archivos, prefiero excluirlos. Y hay cosas que no sólo se pueden sino que parecen convenientes excluir.
Encontré algunos enlaces, toma lo que quieras:
Y a partir de ahí, probablemente podría 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
Si está utilizando rsync
la versión 3.0.6 según Carbon Copy Cloner o 3.1.2 según Homebrew, puede seguir el ejemplo de 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>
--protect-decmpfs
ya no está disponible a partir de 3.1.3, consulte github.com/Homebrew/homebrew-core/pull/23415 .Aconsejaría no eliminar los metadatos durante una copia de seguridad, particularmente los archivos de puntos, por ejemplo ._$filename
, sin embargo, si realmente desea excluir los archivos de puntos de su rsync
comando, agréguelos --exclude '.*'
.
rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B
'.*'
y '/.*'
?). No creo que Finder los copie todos, puede que solo estén asociados. En ese caso, preferiría excluir solo aquellos que son innecesarios (por ejemplo, .DS_Store
). Y sí, los que pueden ser importantes, pero que no quiero tener en mi registro, los puedo filtrar con expresiones regulares.A
disco.Antes de entrar en la respuesta aquí, debe saber que aunque rsync
se incluye un binario con macOS, ahora es un paquete de software antiguo de 16 años. En mi sistema Catalina se /usr/bin/rsync --version
reporta como versión 2.6.9; lanzado en noviembre de 2006. El rsync
historial de lanzamientos desde la versión 2.6.9 parece dejar en claro que la decisión de Apple de detener las actualizaciones rsync
en su sistema operativo se basó completamente en la rsync
decisión del equipo de cambiar a la licencia GPLv3. Esto es desafortunado porque rsync
la versión 3.0 (la versión posterior a la 2.6.9) incluyó actualizaciones significativas que respaldan específicamente a los usuarios de macOS:
--xattrs
: conserva los atributos extendidos de OS X--acls
: conserva las listas de control de acceso de OS X--fake-super
: permite a los usuarios que no son administradores conservar todos los atributosEl punto del párrafo anterior es simplemente este: si desea utilizar rsync
para hacer una copia de seguridad de los archivos en su macOS, debe tener una versión posterior a la que proporciona Apple. De lo contrario, perderá todos los xattrs
metadatos ACLs
que juegan un papel importante en varias características de macOS. Esto se verifica fácilmente con un simple experimento.
Afortunadamente, las versiones actuales de rsync
están disponibles a través de administradores de paquetes de macOS de terceros ( MacPorts , por ejemplo), o para los aficionados al bricolaje, puede clonar el repositorio de rsync
GitHub y construirlo desde la fuente.
También vale la pena señalar que una versión actual de rsync
puede reparar/restaurar una copia de seguridad realizada previamente con la versión nativa rsync
de Apple 2.6.9. También puede reparar/restaurar correos electrónicos xattrs
, ACL
correos electrónicos y marcas de fecha y hora que hayan sido alteradas o perdidas por el "Asistente de migración" de Apple.
rsync
es un paquete maduro y completo con numerosas opciones. Muchas de estas opciones no son elecciones obvias, y uno puede dedicar una buena cantidad de tiempo a desarrollar un conjunto de opciones para cumplir objetivos específicos. Si bien no hay atajos reales para una consideración cuidadosa de su propio caso de uso, sugeriré los siguientes conjuntos de opciones como un comando genérico razonable rsync
para uso general en macOS, un "punto de partida" , en otras palabras. Puede adaptarlos aún más para satisfacer sus propias necesidades.
Presentaré dos casos para usar rsync
para hacer copias de seguridad y restaurar; uno con la --delete
opción y otro sin ella. Ambos casos suponen que el local Macintosh HD
es el origen de la operación de copia de seguridad y el destino de la operación de restauración. En mi caso, hay algunas carpetas (por ejemplo, Documents
) para las que prefiero usar la --delete
opción, y otras carpetas (por ejemplo Music
, Pictures
& Movies
) en las que no uso --delete
. Esta es una elección personal que refleja cómo gestiono/organizo mis datos.
En el contexto de rsync
, la --delete
opción simplemente significa que las eliminaciones que realice en sus carpetas de origen se propagarán a sus carpetas de destino .
--delete
opción:1. En una operación de RESPALDO :
/MacHD_Folder/
/mountpoint/for/remote/storage
rsync -rlAXtgoDiv --fake-super /MacHD_Folder/ /mountpoint/for/remote/storage
2. En una operación RESTORE :
/mountpoint/for/remote/storage
/MacHD_Folder/
rsync -rlAXtgoDiv --fake-super /mountpoint/for/remote/storage/ /MacHD_Folder
--delete
opción:1. En una operación de RESPALDO :
/MacHD_Folder/
/mountpoint/for/remote/storage
rsync -rlAXtgoDiv --fake-super --delete --backup-dir=/mountpoint/for/remote/storage/deletes /MacHD_Folder/ /mountpoint/for/remote/storage
2. En una operación RESTORE : :
/mountpoint/for/remote/storage
/MacHD_Folder/
rsync -rlAXtgoDiv --fake-super /mountpoint/for/remote/storage/ /MacHD_Folder
Tenga en cuenta la asimetría entre las operaciones de copia de seguridad y restauración al usar la --delete
opción. Esto se debe al hecho de que no es necesario eliminar nada para la operación de restauración. Tenga en cuenta también el uso de la --backup-dir
opción cuando use la --delete
opción: Esto hace rsync
que se muevan todos los archivos y carpetas eliminados a la carpeta designada en la unidad de destino. Puede pensar en esto como una forma de "seguro" para los archivos eliminados: funciona como lo Trash
hace la carpeta en su MacHD local.
Esta receta de GitHub ofrece más explicaciones y opciones útiles.
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 copia de seguridad, es excelente, pero como herramienta de archivo se queda un poco plana. Sí, copia todo, pero no obtienes versiones de todo, siempre obtienes solo las últimas versiones.
Usé esta guía http://www.mikerubel.org/computers/rsync_snapshots/ como punto de partida. Leer 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 Unix.
rsync
. En cualquier caso, buen enlace, cubre mucho, rsync
pero a partir de hoy hay una herramienta para hacer exactamente eso: rsnapshot
.
bmike
ricardo
Merchako