miércoles, 19 de marzo de 2008

Artículo: Copias de seguridad, Rutas de archivos y otros

Raro es el día que no oigo a alguien preguntar por la ruta de algún archivo del que quieren realizar una copia de seguridad, o algún archivo subsceptible de ser editado. Como listar el 100% de los archivos sería un tanto absurdo, mejor hacer un listado de los archivos o rutas que podemos encontrar más interesantes, por querer realizar copias de seguridad, copiar datos... cuanto más sepamos de la estructura interna del dispositivo más control tendremos sobre él, y el por qué un archivo va en un lado u en otro. Hay q tener también en cuenta, que este listado se basa en las ubicaciones por defecto, si se han realiazado SymLinks u otros, se debe de tener esto en cuenta. Por otro lado todos los archivos presentes, están basados en la versión 1.1.4, su uso en cualquier otra versión puede no ser remoendado:


./Applications

En esta carpeta se almacnanestarán las aplicaciones por defecto. Desde calendario, notas, Teléfono... las aplicaciones instaladas a través del Installer también serán almacenadas aquí. Cada aplicación estará dentro de su correspondiente Carpeta.app, exceptuando aquellas aplicaciones que son aplicaciones de linea de comandos o similares

La estructura de cada Carpeta.app dependerá ya de cada caso, pero por regla general la estructura de estas carpetas es la misma.


./Applications/Carpeta.app/Idioma.lproj

Estas carpetas son los diferentes idiomas en los que se encuentra traducida nuestra app. Existirá una carpeta lprog por cada idioma que tengamos. Esto es util saberlo, ya que para ahorrar espacio podremos borrar aquellas carpetas de idomas que no usemos o también editar los archivos descriptivos para hacer nuestras propias traducciones.


./Applications/Carpeta.app/Archivos.png

casi todas las app tienen uno o varios archivos de imágenes .png que se usarán a modo de interfaz de la aplicación. Estos .png por lo tanto se pueden modificar o crear nosotros algunos personalizados. En esto precisamente se basa Customize. Estos archivos serán muy comunes encontrarlos a lo largo de todo el sistema de archivos. Hay que tener en cuenta, eso sí, que apple usa archivos .png no estandares, y puede ser posible convertirlos antes con alguna herramienta para poder editarlos correctamente en el PC.


./Applications/Carpeta.app/Info.plist

Cada aplicación lleva asociado un archivo Info.plist. En el se almacenan datos básicos como la versión de la aplicación, el nombre... y algunas características más de la aplicación.


./Applications/Carpeta.app/Carpeta

Normalmente es la aplicación en sí, el ejecutable por así decirlo.


/Applications/Apollo.app/Host

Archivo Host de Apollo. En un archivo host se asocian nombres a IPs, es como un pequeño archivo que nos hace de servidor de DNS. Este archivo es el responsable que Apollo no funcione correctamente. Si MS modifica los servidores de DNS de Messenger, es necesario modificar este archivo. En el momento de escribir este post, este archivo deberá de tener las siguientes entradas para que funcione correctamente:

64.12.161.185 login.oscar.aol.com
65.54.179.216 nexus.passport.com
65.54.183.203 login.live.com
65.54.239.20 messenger.hotmail.com
65.54.239.21 gateway.messenger.hotmail.com
65.54.179.193 loginnet.passport.com

Seguramente el archivo host antiguo que hace una de las primeras causas de que no funcione, tenga otras IPs asignadas a algunos dominios. Aquí dejo uno ya modificado:

Host


./Applications/Preferences.app

Esta es la ruta de la aplicación Ajustes. Es muy importante dado que dentro de ella se encuentran los archivos de configuración que dicen que opciones podremos manejar dentro de Ajustes. Modificando estos archivos se logran sin mucho trabajo agregar o quitar funciones dentro de ajustes. El ejemplo más clásico por ejemplo es mediante la modificación del archivo de configuración Keyboard.plist que modificándolo se le añade la opción de poder habilitar o deshabilitar la correción automática del teclado. Muchas aplicaciones del tipo Advanced preferences, precisamente se basan mucho en la modificación de estos archivos.

Como se puede observar en dicha carpeta, existe un archivo .plist para casi cada ajuste:

Keyboard.plist -> los ajustes del teclado, modificandolo nos permite por ejemplo añadir una opcion para activar/desactivar la autocorrección del teclado. Para ello bastaría con la creación de las claves:

KeyboardAutocorrection
label
Activar Autocorrección

Keyboard.plist modificado

Settings-iPhone.plist -> Si es un iPhone, es el archivo de ajustes que se cargará, con opciones para modificar el teléfono, EDGE...

Settings-iPod.plist -> Si es un iPod, es el archivo de ajustes que se usará especificamente para Touch.

Quien se de cuenta rapidamente, se elimina el archivo Settings-iPod.plist y se renombra Settings-iPhone.plist a Settings-iPod.plist, cuando entremos en Ajustes tendremos los Ajustes del iPhone.

Hay muchos otros archivos que pueden ser muy útiles, pero comprendereis que tan solo me pare en algunos. Ya entra en cada cual ir investigando y editando los posibles archivos e ir viendo los efectos que va ocasionando.


./Applications/Weather.app/Info.plist

Aunque hemos comentado anteriormente este tipo de archivos, es bueno especificar concretamente el del tiempo. Cuando queremos modificar los iconos del board a través de SummerBoard por ejemplo, rapidamente nos damos cuenta de que el icono del "Tiempo" no cambia. Es debido a este archivo. Se puede modificar para que el icono finalmente se aplique. Para ello debemos de eliminar de dicho archivo las claves:

SBIconClass
SBWeatherApplicationIcon

Info.plist modificado


./bin

En esta carpeta se almacenarán las utilidades de UNIX, como cp, ln... es posible que muchas de las utilidades que instalemos nosotros de este tipo caigan en esta carpeta


./dev

Esta es la carpeta de dispositivos por así decirlo. No hay que engañarse del tamaño de los archivos, ya que en realidad son los dispositivos en sí. Por ejemplo rdisk0s1 es la imagen del OS. Es en esta carpeta donde de echo se monta la primera partición, la partición del OS


./Library/Alarms

Se guardan los diferentes tonos que podemos elegir para las alarmas, como todo, podemos eliminar aquellos que no usemos. El archivo Plist tan solo es el índice de los archivos que se mostrarán luego en la aplicación alarma


./Library/Ringtones

Se guardarán los diferentes tonos de llamadas.


./Library/Wallpaper

Se guardarán los diferentes Wallpaper.


./private/etc/

Carpeta en la que encontramos algunas utilidades más de sistema, como passwd, así como archivos de configuración del sistema como hosts (explicado antes en apollo), master.passwd (que contiene la contraseña de nuestros usuarios)...


./private/etc/bluetool

Algunos script de inicialización y suspension del BlueTooth


./private/etc/racoon

La carpeta de configuración de racoon. Racoon es un demonio IKE, para permitir conexiones IPsec. Imprescindible para conexion VLAN


./private/var

Es el lugar en el que se monta la segunda partición, o la partición de datos. Para llevar un orden, será explicada más adelante, al finalizar con la partición del OS.


./sbin

Al igual que la carpeta ./bin contenía ulitidades de sistema, sbin almacenará las utilidades esenciales más básicas, como mount o reboot


./System/Library/ApplePTP
./System/Library/AppleUSBDevice

Archivos de configuraión para la comunicación USB con el PC


./System/Library/Audio/UISounds

Los archivos de sonido del sistema. Es decir, los click, los correos que llegan, el sonido del deslizante cuando se apaga...


./System/Library/Caches

El caché del Kernel


./System/Library/CoreServices/SystemVersion.plist

Es el archivo que especifica la versión del software que tenemos. Podemos cambiarlo si lo deseamos, y en ajustes, acerca de... podremos ver los nuevos ajustes. Como si queremos poner que tenemos una versión 1.2.0 ó lo que queramos. Este archivo se ha usado mucho para publicar videos falsos de supuestas versiones JB antes de que fuera posible.


./System/Library/CoreServices/Encodings

Conversores para la conversión de diferentes sistemas de codificación (idiomas). Por ejemplo para poder mostrar un texto en cirílico o en chino.


./System/Library/CoreServices/SpringBoard.app

Es la carpeta de la aplicacion SpringBoard. Esta no se encuentra dentro de la carpeta /Applications, es una de las escepciones. En ella se encuentra evidentemente todos lso archivos de configuración del SpringBoard, así como multitud de imágenes .png que pueden modificarse para cambiar la apariencia del SpringBoard. Recordemos que el SpringBoard es por asi decirlo el escritorio.


./System/Library/CoreServices/SpringBoard.app/M68AP.plist

Es el archivo de configuración que se carga al iniciar el iPhone. En este archivo de configuración se le dice al iPhone los ajustes que debe de tener, los iconos, las funciones... Es posible deshabilitar o añadir funciones a este archivo de manera relativamente simple


./System/Library/CoreServices/SpringBoard.app/N45AP.plist

Al igual que el archivo anterior, este es el que se carga al iniciar el iPod Touch. Dado que tanto el iPod como el iPhone comparten prácticamente el mismo software y hardware, simplemente con modificar el nombre de estos archivos, y renombrar N45AP.plist a M68AP.plist, convertiremos el iPhone en un iPod Touch, en cuanto a software me refiero claro está, al enceder el iPhone, el software pensará que se trata de un iPod. Lo mismo pasa al revés. En este caso el iPod se creerá que es un iPhone. Este fue el primer método que se realizó para activar las aplicaciones de Enero, dado que el iPhone las tiene activadas por defecto, era tan facil como modificar este archivo.


./System/Library/CoreServices/SpringBoard.app/SpringBoard

Esta es la aplicación en sí, ha sido ya muy comentado este archivo cuando hablaba de la modificación del SpringBoard.


./System/Library/Extensions

Aquí se encuentran algunas aplicaciones secundarias, como por ejemplo los protocolos para VLAN, las app encargadas de la conexión al PC, etc


./System/Library/Fonts

Las fuentes del sistema. Ya apareció una aplicación que permitía usar cualquier fuente instalada como fuente del sistema. También es posible, aunque un poco más complejo, instalar fuentes propias, fuentes que de por sí no vienen en el dispositivo


./System/Library/Frameworks

Los Frameworks en el mundo de MAC OS podría ser el equivalente a las librerías DLL en los PCs más o menos. Son archivos necesarios para el funcionamiento de las aplicaciones, son rutinas... son subprogramas necesarios para otras aplicaciones. aquí tambien se encuentran las configuraciones de cada aplicación que podamos encontrar en ajustes. Listarlas todas sería muy lento, así que tan solo me detendré en las localidades más importantes.


./System/Library/Frameworks/AppSupport.framework

Podemos encontrar los archivos donde se encuentran zonas horarias y los paises del mundo


./System/Library/Frameworks/Celestial.framework

Otra de esas carpetas interesantes. En este caso aquí encontramos todos los ajustes de volumen, vibración...


./System/Library/Frameworks/Celestial.framework/RegionalVolumeLimits.plist

Este archivo es el que limita el volumen según nos encontremos en una región u otra. Como sabemos, la UE tiene normas para limitar la potencia de salida de algunos dispositivos por posibles problemas de audión que ello pudiera ocasionar. Pero muchas veces necesitamos que este limitador desaparezca. Si lo editásemos veríamos códigos y el nivel de volumen al que se ha limitado, suponiendo un 1 como sin limitación. Así podemos limitar o no limitar la salida. Si quisiésemos quitar la limitación, bastaría con establecer a 1 todos los códigos de region:

RegionalVolumeLimits.plist modificado para eliminar los límites de volumen de región


./System/Library/Frameworks/UIKit.framework

En esta ruta se encuentran el 90% de todas las "pieles" o imágenes del sistema. Mucho del trabajo que realiza Customize se basa en este archivo. Todos aquellos archivos que terminan por ejemplo en .artwork pueden extraerse y obtener de ellos las imágenes que queremos modificar.

Para extraer estos archivos lo mejor es usar una herramienta llamada iPhoneShop, descargable desde aquí:

iPhoneShop

Es una app en java, para hacerla andar hay q teclear:

java -jar iPhoneShop-0.6.jar ARTWORK archivoquesea.artwork export pngs

y despues de modificar los archivos, el proceso contrario:

java -jar iPhoneShop-0.6.jar ARTWORK archivoquesea.artwork import pngs

Por supuesto despues de modificar los archivos artwork, al copiarlos de nuevo en el dispositivo hay que establecer permisos 755, como con todo


./System/Library/Internet Plug-Ins

Es la carpeta dnd se instalan los accesorios para Safari. ya hay algunos por ahí andando, aunque el sueño sería tener uno para soporte flash.


./System/Library/KeyboardDictionaries

Aquí se encuentran los diccionarios de los distintos idiomas. Podemos eliminarlos si no los usamos o incluso modificarlos si queremos


./System/Library/LaunchDaemons

Los demonios que se ejecutan al iniciar el dispositivos con los parámetros concretos


./System/Library/Lockdown

Carpeta imprescindible. En ella se guardan los certificados de seguridad necesarios para por ejemplo la música comprada en itunes con DRM, activación del iPhone...


./System/Library/PreferenceBundles

Básicamente las opciones de configuración que tenemos en ajustes.


./usr/bin
./usr/libexec

Algunas utilidades de liena de comandos más. Además será aquí donde se instalesn las utilidades de Cydia o BSD Subsystem.


./usr/lib

Aquí se encuentran las librerías que serán usadas en los programas y utilidades


./usr/sbin

Los servicios

-----------------
--------------------------

./private/var

Como hemos dicho este es el punto de montaje de la partición de datos. Casi todos los datos que se crean aquí son dinámicos. Toda esta partición nada más tener el dispositivo formateado, estaría casi completamente vacía. Son datos de configuración, nuestros datos, información...


./private/var/logs/

Carpeta en la que se almacenan diferentes logs. Los logs son registros de sucesos.


./private/var/logs/AppleSupport/general.log

Aquí encontraremos los pequeños errores que se detecten en las aplicaciones, pero que no impiden su funcionamiento en el momento de ocurrir. Podemos ver perfectamente que aplicación a que hora como... está muy bien si notamos pequeños mal funcionamientos de las aplicaciones.


./private/var/logs/CrashReporter

En este caso encontraremos en esta carpeta un archivo plist con cada uno de los errores críticos que hemos tenido y que debido a ellos la aplicación se debió de cerrar. Estos reportes pueden ser enviados a Apple. Itunes detecta de forma automática cuando uno de estos errores se ha generado y nos dará la oportunidad de enviarlos a Apple. Evidentemente la gran mayoria de los errores son aplicaciones instaladas, y no son fallos en de Apple. Si queremos podemos eliminar aquellos reportes que creamos inservibles.


Por último, las carpetas mobile y root las trataremos indistintamente. A efectos prácticos es muy diferente, pero a efectos teóricos para saber que hay en cada lado es lo mismo. En Root irían los archivos creados y usados por root y en mobile lo propio, así que para no repetir lo mismo, siempre haré mención a mobile, pero puede que el archivo en realidad esté en root:

./private/var/mobile/Library

Aquí estarán la gran mayoría de los datos de las aplicaciones, así como nusetros ajustes, datos... usados en las mismas aplicaciones. En cuanto veamos algunos importantes, el resto se comprenderá perfectamente:


./private/var/mobile/Applications/

Esta carpeta por ahora casi en deshuso, por ahora tan solo alberga el archivo de configuración de Apple para activar las app de la actualización de Enero para el iPod Touch. Sin embargo en el futuro, es casi seguro que las app del SDK vengan instaladas aquí, en vez de en ./Applications


./private/var/mobile/Library/AddressBook

La libreta de contactos. En esa carpeta se guardan nuestros contactos. Apple no ha usado en esta ocasión un formato estandar, sino que se basa en un formato de bases de datos. Que no es que no sea estandar, pero el estandar dice que los contactos deberían de estar en ldif por ejemplo. Si queremos realizar una copia de seguridad de nuestros contactos, estas es la carpeta a guardar


./private/var/mobile/Library/Calendar

Pues creo que está claro. En esta se encuentra nuestro calendario. Y al igual que con la libreta de contactos no se usa un formato estandar como .icl. Si deseamos una copia de seguridad tan solo deberíamos de...


./private/var/mobile/Library/CallHistory

Como su propio nombre dice, el hisotrial de llamadas del iPhone


./private/var/mobile/Library/Cookies/Cookies.plist

Las cookies de safari


./private/var/mobile/Library/Installer

Esta es de las pocas carpetas ajena al sistema de apple pondré, pero me parece importante, ya que en ella es donde se almacenan nuestros repositorios, nuestras aplicaciones instaladas...

Así si deseásemos hacer una copia de seguridad de los repositorios para evitar meterlos a mano otra vez, nos bastaría con el archivo PackageSources.plist

Así si deseamos eliminar una aplicación que esté en el installer y no nos lo permite, podríamos eliminar su entrada desde el archivo LocalPackages.plist


./private/var/mobile/Library/Mail

Ahora le toca el turno de la configuración de nuestra cuenta de correo, así como de los correos descargados en el dispositivo en ese momento


./private/var/mobile/Library/Notes

Las notas creadas, y al igual que con el calendario o los contactos, aunque se pueden editar relativamente simple en el PC, si buscábais un archivo txt para editar olvidaros. Aunque para copia de seguridad da igual


./private/var/mobile/Library/Preferences

Normlamente cada aplicación tiene una carpeta propia en Library para guardar algunos datos como hemos visto en installer o notas. Sin embargo eso son los datos. Las configuraciones suelen ir sin embargo en esta otra carpeta. Solo los ajustes establecidos por nosotros en dichas aplicaciones. El uso de uno u otro lugar depende mas que nada de los programadores y como tengan implementado su código


./private/var/mobile/Library/Preferences/com.apple.springboard.plist

Este archivo es interesante guardarlo o modificarlo, ya que es el que dice el orden de nuestras aplicaciones y otros muchos datos.


./private/var/mobile/Library/Preferences/com.apple.stocks.plist

En este se almacenarán los mercados añadidos en la bolsa. Util guardarlo si queremos no tener que volver a buscar los valores y añadirlos


./private/var/mobile/Library/Preferences/com.apple.weather.plist

En este se almacenarán el tiempo de las diferentes ciudades. Muy util si no queremos volver a añadir y buscar el tiempo en determinados lugares


/private/var/mobile/Library/Safari

Aquí podemos encontrar tres archivos.
Tenemos por un lado los favoritos (o marcadores), que estarían en el archivo Bookmarks.plist.
Por otro lado el historial: History.plist
Y por otro un archivo que nos dice el estado actual de safari


./private/var/mobile/Library/SummerBoard/Themes

Otra de esas carpetas ajenas al dispositivo. En esta se almacenarán los diferentes temas instalados de SummerBoard. Si queremos añadir uno manualmente o modificar alguno existente, este será el punto de partida. Tambien es válido para realizar copias de seguridad de nuestros temas y no tener que instalarlos de nuevo o buscarlos o...


./private/var/mobile/Library/WebClips

Aquí se almacenarán los WebClips, es decir, esos accesos directos que podemos crear en el Board para ir directamente a la web.


./private/var/mobile/Library/YouTube

Por si queremos guardar los favoritos de Youtube


./private/var/mobile/Media

Por último, en esta carpeta tendremos el peso de nuestra memoria Flash. Algunos programadores de aplicaicones prefieren usar esta ruta cuando hablamos de datos masivos, como las ROMs de los emuladores o samples para algunos instrumentos.


./private/var/mobile/Media/DCIM/100APPLE

En esta carpeta se almacenarán las fotos realizadas por el iPhone. Esta carpeta tambien puede ser muy util crearla en el iPod touch, dado que algunas aplicaciones usan estas imágenes para otras tareas. Por ejemplo hay aplicaciones para capturar la pantalla que dirige aquí las capturas tomadas.


./private/var/mobile/Media/iTunes_Control/Artwork

Lugar donde se almacenan las carátulas de los álbumnes introducidos, en caso de tener las carátulas claro está


./private/var/mobile/Media/iTunes_Control/iTunes

Los archivos de sincronización con iTunes, desde la lista de archivos introducidos, como los ajustes de reproducción...


./private/var/mobile/Media/iTunes_Control/Music

La carpeta que contiene tanto los videos como la música introducida en el dispositivo. Apple lia un poco el asunto, y crea una carpeta cada X archivos y cada archivo lo renombra según sus gustos...


./private/var/mobile/Media/Photos

Las fotos introducidas en el dispositivo. En contra de lo que sucede también en el iPod Classic que permite introducir las fotos en "Alta calidad", itunes escala las imágenes y crea archivos de bases de datos de un extraño formato, lo que hace complicado la extracción de vuelta de las imágenes previamente cargadas. Luego no vemos un archivo png ni jpg por cada imagen, tan solo "paquetes".

--------------------
---------------------------


Creo que no me dejo nada de importancia, si encuento algo más editaré y completaré la lista, o si alguno quiere aportar algo también.

Un saludo.

7 comentarios:

Gothnux dijo...

Buenos días,

Muy buenas las direcciones para poder realizar los backups de las cosas, llevo tiempo esperando que hicieras una entrada así en tu blog para quedarme al canto desde que te lei en un foro diciendo que cuando restaurabas en pocos pasos tenías el ipod tal y como lo tenías antes de restaurar.

Yo creo que más o menos lo que haces es una copia de:

Aplicaciones
Installer
Preferencias
root
mobile

Tanto la Música como las Fotos las sincronizas de nuevo con el iTunes ¿verdad?

Lo digo para ir haciendome yo mis backups cada vez que actualizo y demás, y no tener que estar metiendo constantemente todas las apps.

Un saludo y muy currado tu blog.

Theliel dijo...

En realidad no hago copias de seguridad de las aplicaciones, y mucho menos de las carpetas root o mobile. Si lo hago del installer, calendario, archivos modificados, agenda...

Anónimo dijo...

Magnífico y currado manual. Felicitaciones!
Con qué haces el backup, con el TimeCapsule?

Theliel dijo...

no, a mano

Pepe317 dijo...

Genial aportación Theliel!
Muchísimas gracias.

Anónimo dijo...

Una información muy muy buenas. Gracias por compartirla con la Comunidad.

Un saludo.

Anónimo dijo...

vmnetmgHola,
También estaría bien publicar las rutas de los archivos para el iPhone clásico con el firm 2.0.
Gracias y saludos

 
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.