{"id":742,"date":"2008-08-31T18:24:51","date_gmt":"2008-08-31T10:24:51","guid":{"rendered":"http:\/\/www.nargalzius.com\/blog2\/http:\/www.nargalzius.com\/blog2\/archives\/2008\/08\/2008_08_31_1824.php"},"modified":"2008-08-31T18:24:51","modified_gmt":"2008-08-31T10:24:51","slug":"fast-clean-and-reliable-iphone-backups","status":"publish","type":"post","link":"http:\/\/nargalzius.com\/blog\/archives\/2008\/08\/31\/fast-clean-and-reliable-iphone-backups","title":{"rendered":"Fast, clean and reliable iPhone backups"},"content":{"rendered":"<p>As iPhone users know, iTunes&#8217; backup facility is sketchy at best; It can corrupt backups, it can be <a href=\"http:\/\/gizmodo.com\/5041731\/8%252B-hour-iphone-sync-timelapse-video-aka-be-thankful-for-your-short-two-hour-sync\" title=\"up to 8 hours!\">ridiculously slow<\/a>, and on a personal note; I don&#8217;t like the idea of &#8220;trace files&#8221; creeping into a newly restored device.<\/p>\n<p>So I&#8217;ve decided to outline a &#8220;workflow&#8221; I personally use whenever I&#8217;m up for a restore session. Everything here assumes a <em>jailbroken<\/em> device of course.<\/p>\n<h1>How it was before<\/h1>\n<p>On a 2.x device, the way you could get your AppStore apps&#8217; settings restored was by using iTunes&#8217; backup images &#8211; buggy as it is. There&#8217;s also the issue of bugs during <em>normal usage;<\/em> there have been cases of legitimate apps randomly crashing &#8211; and the only &#8220;cure&#8221; was to erase the app and reinstall it. This would&#8217;ve been fine, only they forgot to mention that when you erase\/uninstall an app, that&#8217;s <strong>exactly<\/strong> what you&#8217;ve done &#8211; along with <strong>all its data.<\/strong><\/p>\n<!--more-->\n<style type=\"text\/css\">\n.cydia li {\nlist-style-type: none;\nfont-family: \"Monaco\", \"Lucida Console\", \"Courier New\";\n}\nli.secondary, .csec { color:#d38b8b; }\nli.required, .creq { color:#be2026; }\nli.personal, .cper { color:#999999; }\nli.appbackup, .cabu { color:#425a98; }\n<\/style>\n<p>That same nuance applies to jailbroken apps as well; doubly so, since there practically isn&#8217;t any automated way of doing it. With official <em>AppStore<\/em> apps, at least you can try your luck and use iTunes&#8217; crappy method. On the jailbroken side you literally have to <code>SSH<\/code> to the phone, hunt down, and manually copy files\/folders <span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_1');\" onkeypress=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_1');\" ><sup id=\"footnote_plugin_tooltip_742_1_1\" class=\"footnote_plugin_tooltip_text\">1 <\/sup><\/a><span id=\"footnote_plugin_tooltip_text_742_1_1\" class=\"footnote_tooltip\">In different locations<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_742_1_1').tooltip({ tip: '#footnote_plugin_tooltip_text_742_1_1', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script> to &#8220;backup&#8221; a setting of an app you want &#8220;backed up.&#8221; And we&#8217;re only talking about <em>settings<\/em> here; you&#8217;d still have to re-install <strong>every single<\/strong> one of those apps after every restore.<\/p>\n<p>Thankfully in my case, this pain in the tooschie isn&#8217;t as pronounced. Ever since the <em>AppStore<\/em>, the jailbroken apps I use through <em>Cydia<\/em> are limited to system administration and such; most of them are of the generic (&#8220;switch on\/off&#8221; type) persuasion &#8211; so they require minimal or no &#8220;configuration.&#8221; That eliminated the whole need for backing up settings; which only leaves us the &#8220;manual installation&#8221; part to deal with.<\/p>\n<h1>Pwnage Tool<\/h1>\n<p>Thankfully, there&#8217;s a program out there that allows you to build a custom <code>.ipsw<\/code> file. <span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_2');\" onkeypress=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_2');\" ><sup id=\"footnote_plugin_tooltip_742_1_2\" class=\"footnote_plugin_tooltip_text\">2 <\/sup><\/a><span id=\"footnote_plugin_tooltip_text_742_1_2\" class=\"footnote_tooltip\">For simplicity&#8217;s sake, just consider the file as a &#8220;disk image&#8221; of an iPhone\/iPod Touch OS&#8217;s base install; Whenever you restore, it uses these images and flashes your device with their contents.<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_742_1_2').tooltip({ tip: '#footnote_plugin_tooltip_text_742_1_2', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script> What this implies is that you can &#8220;preload&#8221; your device with 3rd party applications as part of the restore process. This naturally solves the hassle I mentioned in the previous paragraphs. It also is a <strong>huge<\/strong> timesaver; because iPhones\/Touches download at a <em>much slower<\/em> speed than your desktop &#8211; so save yourself the wait by just having them pre-installed into the device right off the bat.<\/p>\n<h1>AppBackup<\/h1>\n<p>This is a jailbroken app that can backup\/restore <em>AppStore<\/em> app settings into one folder. For those who&#8217;ve ever tried backing up such apps manually, I&#8217;m sure you&#8217;ve seen what these apps&#8217; folders look like: <code>\/var\/mobile\/Applications\/E81FD8D9-225D-4C6A-91E5-A513B654401E<\/code> or something similar. Very obscure indeed &#8211; try &#8220;hunting&#8221; file settings that way.<\/p>\n<p><em>AppBackup<\/em> makes short work of that and does all the searching for you; then dumps all the backups into a single folder.<\/p>\n<h1>Putting it all together<\/h1>\n<p>Given the stuff (and caveats) at our disposal; here&#8217;s an ideal flow of tasks we need for a clean restore&#8230; ending up with restored application settings. To avoid confusion, I&#8217;ll call Apple&#8217;s (iTunes) restore process &#8220;reformatting&#8221; and &#8220;restoring&#8221; is the actual restoration of [user] data.<\/p>\n<ol>\n<li>Backup <em>AppStore<\/em> app settings to desktop (<em>via AppBackup<\/em>)<\/li>\n<li>Reformat device normally using custom .ipsw (to pre-install jailbroken apps like <em>AppBackup<\/em>) and sync\/install <em>AppStore<\/em> apps back into the device.<\/li>\n<li>Put backed up <em>AppBackup<\/em> files back into jailbroken device and restore them (<em>via AppBackup<\/em>)<\/li>\n<\/ol>\n<p>The only caveat here is that you lose your <strong>Global Settings<\/strong> <span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_3');\" onkeypress=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_3');\" ><sup id=\"footnote_plugin_tooltip_742_1_3\" class=\"footnote_plugin_tooltip_text\">3 <\/sup><\/a><span id=\"footnote_plugin_tooltip_text_742_1_3\" class=\"footnote_tooltip\">The settings you usually set through the &#8220;Settings&#8221; application such as network passwords, etc. That sort of thing.<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_742_1_3').tooltip({ tip: '#footnote_plugin_tooltip_text_742_1_3', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script> and some data from the default Apple applications (Clock, SMS, Weather, etc). Also, interestingly enough, it doesn&#8217;t provide backing up of jailbroken app settings <span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_4');\" onkeypress=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_4');\" ><sup id=\"footnote_plugin_tooltip_742_1_4\" class=\"footnote_plugin_tooltip_text\">4 <\/sup><\/a><span id=\"footnote_plugin_tooltip_text_742_1_4\" class=\"footnote_tooltip\">Which doesn&#8217;t hurt to have in case you&#8217;ll need it too.<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_742_1_4').tooltip({ tip: '#footnote_plugin_tooltip_text_742_1_4', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script> Hopefully the author of <em>AppBackup<\/em> would include provisions for those in the next version.<\/p>\n<h1>The Process<\/h1>\n<p>Now lets get to the meat of the matter. What exactly do I do when I undertake a reformatting session&#8230;<\/p>\n<h2>Preliminaries: Have everything you need ready<\/h2>\n<p>Nothing sucks more than finding out in the middle of a reformat that you&#8217;ve missed something that can make you lose your data. Personally, I check for these before going through reformatting.<\/p>\n<ol>\n<li>On the device: make sure you have the following installed (and working):\n<ul>\n<li>Open<code>SSH<\/code><\/li>\n<li><em>AppBackup<\/em><\/li>\n<\/ul><\/li>\n<li>On the desktop side:\n<ul>\n<li><strong>Device has been synced with desktop<\/strong>\nI can&#8217;t stress this enough; a lot of people worry about their contact information, calendar stuff, etc. But if you just sync it to your desktop before doing a restore session, you can always just have the desktop overwrite the device &#8211; which means if both were synchronized right before, you should be set.<\/li>\n<li>Make sure you can actually access the phone via <code>SSH<\/code><\/li>\n<li>Have your custom <code>.ipsw<\/code> file configured and ready<\/li>\n<\/ul><\/li>\n<\/ol>\n<h3>Building an IPSW via PwnageTool<\/h3>\n<p>As of this posting, for my purposes, here&#8217;s the skinny on what packages I need pre-installed on my phone. I won&#8217;t bother getting into detail about the nuances of <em>Pwnage Tool<\/em> or <em>Cydia<\/em>, but sufficed to say I&#8217;ll just assume you know how the fundamentals of each.<\/p>\n<p>The packages in <span class=\"creq\">red<\/span> are the absolute minimum required for <em>Cydia<\/em> to run. These are installed whether you include them or not when building your <code>.ipsw<\/code> &#8211; assuming you&#8217;ve chosen to include <em>Cydia<\/em> in the install options. The benefit of manually checking\/downloading them however, is that it makes sure you use the most recent versions of each package &#8211; it&#8217;ll save you a lot of time. <span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_5');\" onkeypress=\"footnote_moveToReference_742_1('footnote_plugin_reference_742_1_5');\" ><sup id=\"footnote_plugin_tooltip_742_1_5\" class=\"footnote_plugin_tooltip_text\">5 <\/sup><\/a><span id=\"footnote_plugin_tooltip_text_742_1_5\" class=\"footnote_tooltip\">Because if you just stick to the default install, and it so happens that a bunch of packages have been updated, you might have to sit through a long update process.<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_742_1_5').tooltip({ tip: '#footnote_plugin_tooltip_text_742_1_5', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top right', relative: true, offset: [10, 10], });<\/script><\/p>\n<p>The <span class=\"csec\">light red<\/span> ones I believe are also installed by default; I still marked them differently because you <strong>can<\/strong> delete them if you&#8217;re <em>really anal<\/em> about diskspace. I strongly suggest you leave them there however; they only amount to about 9MB anyways &#8211; hardly a show stopper for a multi-GB device.<\/p>\n<p>The <span class=\"cper\">gray<\/span> packages are optional, but what I personally install for whatever useful reason I have (e.g. <em>openSSH<\/em> &#8211; which you&#8217;ll be needing at some point)<\/p>\n<p>Lastly, the packages in <span class=\"cabu\">blue<\/span>, just like those in gray, aren&#8217;t needed for <em>Cydia<\/em> to run, but they are needed for <em>AppBackup<\/em> to run, so make sure you include them as well.<\/p>\n<ul class=\"_Cydia_\">\n<li class=\"secondary\">adv-cmds<\/li>\n<li class=\"required\">APT<\/li>\n<li class=\"personal\">Automatic SSH<\/li>\n<li class=\"required\">Base Structure<\/li>\n<li class=\"required\">Bourne-Again SHell<\/li>\n<li class=\"required\">Berkeley DB<\/li>\n<li class=\"required\">bzip2<\/li>\n<li class=\"_AppBackup_\">Classpath<\/li>\n<li class=\"required\">Core Utilities<\/li>\n<li class=\"required\">Cydia Installer<\/li>\n<li class=\"required\">Cydia Community Sources<\/li>\n<li class=\"required\">Darwin Tools<\/li>\n<li class=\"required\">Diff Utilities<\/li>\n<li class=\"required\">diskdev-cmds<\/li>\n<li class=\"required\">Debian Packager<\/li>\n<li class=\"_AppBackup_\">XML Parser Toolkit<\/li>\n<li class=\"required\">Find Utilities<\/li>\n<li class=\"secondary\">Gawk<\/li>\n<li class=\"required\">gettext<\/li>\n<li class=\"required\">GNU Privacy Guard<\/li>\n<li class=\"secondary\">grep<\/li>\n<li class=\"required\">gzip<\/li>\n<li class=\"secondary\">inetutils<\/li>\n<li class=\"_AppBackup_\">Link Identy Editor<\/li>\n<li class=\"secondary\">less<\/li>\n<li class=\"_AppBackup_\">ARM Floating Point<\/li>\n<li class=\"_AppBackup_\">libffi<\/li>\n<li class=\"required\">libgcc<\/li>\n<li class=\"secondary\">libresolv<\/li>\n<li class=\"required\">libutil<\/li>\n<li class=\"required\">libxml2<\/li>\n<li class=\"personal\">Mobile Substrate<\/li>\n<li class=\"personal\">MobileTerminal*<\/li>\n<li class=\"secondary\">nano<\/li>\n<li class=\"required\">New Curses<\/li>\n<li class=\"secondary\">network-cmds<\/li>\n<li class=\"secondary\">New Vi<\/li>\n<li class=\"_AppBackup_\">Darwin CC Tools<\/li>\n<li class=\"personal\">OpenSSH<\/li>\n<li class=\"required\">OpenSSL<\/li>\n<li class=\"required\">pcre<\/li>\n<li class=\"_AppBackup_\">PyObjC<\/li>\n<li class=\"_AppBackup_\">Python<\/li>\n<li class=\"required\">readline<\/li>\n<li class=\"secondary\">rsync<\/li>\n<li class=\"required\">sed<\/li>\n<li class=\"_AppBackup_\">Setup Tools<\/li>\n<li class=\"required\">shell-cmds<\/li>\n<li class=\"secondary\">SQLite v3<\/li>\n<li class=\"personal\">Sudo<\/li>\n<li class=\"required\">system-cmds<\/li>\n<li class=\"required\">Tape Archive<\/li>\n<li class=\"_AppBackup_\">UICaboodle.py<\/li>\n<li class=\"secondary\">unzip<\/li>\n<li class=\"secondary\">zip\n<\/li><\/ul>\n<ul>\n<li>Requires <em>SpringBridge<\/em> package installed from BigBoss&#8217;s source.<\/li>\n<\/ul>\n<p>Aside from the default Telesphoreo source, here are the other repositories\/sources I also include in my <em>Cydia<\/em> install (as of 08.08.31):<\/p>\n<ul>\n<li><strong>BigBoss&#8217;s Source<\/strong> (required since <em>AppBackup<\/em> is located there)<\/li>\n<li>ModMyiFone&#8217;s Source<\/li>\n<li>ZodTTD&#8217;s Source<\/li>\n<li>Nik&#8217;s Source<\/li>\n<li>Ste&#8217;s Source<\/li>\n<li>iSpazio&#8217;s Source<\/li>\n<li>iClarified&#8217;s Source<\/li>\n<li>Hack&amp;Dev Team Source<\/li>\n<\/ul>\n<h2>Step 1: Backup via AppBackup<\/h2>\n<p>Simple enough, launch <em>AppBackup<\/em>, and backup everything.<\/p>\n<h2>Step 2: Transfer backup files to desktop<\/h2>\n<p>Access the device via <code>SSH<\/code> and copy the <code>\/var\/mobile\/Library\/_AppBackup_<\/code> folder (and all its contents) to your desktop<\/p>\n<h2>Step 3: Restore device with your custom .ipsw<\/h2>\n<p>You did all the <strong>preliminaries<\/strong> right? So you should still be able to follow at this point.<\/p>\n<h2>Step 4: Setup your device as a new device and configure the other areas<\/h2>\n<p>Remember, we don&#8217;t want the &#8220;file clutter&#8221; that may be present in an iTunes backup, so don&#8217;t restore via an iTunes backup image. Just start from scratch.<\/p>\n<p>If you synced the device like I told you in the preliminaries, it should be a matter of just checking boxes here and there and selecting that using that special area in the &#8220;info&#8221; tab to <strong>force<\/strong> iTunes into overwriting your device with (hopefully up to date) data from the calendar, contacts, etc.<\/p>\n<p>You also want to start installing the <em>AppStore<\/em> applications you want through the &#8220;Applications&#8221; tab.<\/p>\n<p>Do a sync and continue to step 5<\/p>\n<h2>Step 5: Restore AppStore data<\/h2>\n<p>Just do the reverse of steps 1 and 2; access the phone via <code>SSH<\/code> again (again, you should be able to if you followed the preliminaries and have <code>SSH<\/code> installed)<\/p>\n<p>At this point, I&#8217;d suggest you run <em>AppBackup<\/em> first and do a backup just so it initializes everything properly (and so you can see if it works properly before putting back the data)<\/p>\n<p>If everything is in order, exit <em>AppBackup<\/em> (restart the phone just to be on the safe side) then access the device via <code>SSH<\/code>.<\/p>\n<p>Overwrite the <code>\/var\/mobile\/Library\/_AppBackup_<\/code> folder with the one you backed up. And you should be able restore the data the next time you launch <em>AppBackup<\/em>. Personally I just overwrite the files inside the <code>\/var\/mobile\/Library\/_AppBackup_\/tarballs<\/code> folder.<\/p>\n<h2>You&#8217;re done!<\/h2>\n<p>The next time you launch any of your <em>AppStore<\/em> apps, you shouldn&#8217;t have to reconfigure them anymore.<\/p>\n<hr \/>\n<p>Some people (myself included) experience the &#8220;password&#8221; bug after a jailbroken reformat (usually triggered by the EDGE toggle in BossPrefs) The symptom of the bug is that you can never get mail because the authentication fails, and you can&#8217;t log-on to a network.<\/p>\n<p>You can fix that by accessing the device and setting the permissions on the following folders:<\/p>\n<p>chmod 777 \/var\/Keychains\nchmod -R 777 \/private\/var\/Managed\\ Preferences\/<\/p>\n<p>I just suggest you do all this <strong>before<\/strong> you try\/use the EDGE toggle just to be on the safe side.<\/p><div class=\"speaker-mute footnotes_reference_container\"> <div class=\"footnote_container_prepare\"><p><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_label pointer\" onclick=\"footnote_expand_collapse_reference_container_742_1();\">Notes<\/span><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_collapse_button\" style=\"display: none;\" onclick=\"footnote_expand_collapse_reference_container_742_1();\">[<a id=\"footnote_reference_container_collapse_button_742_1\">+<\/a>]<\/span><\/p><\/div> <div id=\"footnote_references_container_742_1\" style=\"\"><table class=\"footnotes_table footnote-reference-container\"><caption class=\"accessibility\">Notes<\/caption> <tbody> \r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_742_1('footnote_plugin_tooltip_742_1_1');\"><a id=\"footnote_plugin_reference_742_1_1\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8673;<\/span>1<\/a><\/th> <td class=\"footnote_plugin_text\">In different locations<\/td><\/tr>\r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_742_1('footnote_plugin_tooltip_742_1_2');\"><a id=\"footnote_plugin_reference_742_1_2\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8673;<\/span>2<\/a><\/th> <td class=\"footnote_plugin_text\">For simplicity&#8217;s sake, just consider the file as a &#8220;disk image&#8221; of an iPhone\/iPod Touch OS&#8217;s base install; Whenever you restore, it uses these images and flashes your device with their contents.<\/td><\/tr>\r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_742_1('footnote_plugin_tooltip_742_1_3');\"><a id=\"footnote_plugin_reference_742_1_3\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8673;<\/span>3<\/a><\/th> <td class=\"footnote_plugin_text\">The settings you usually set through the &#8220;Settings&#8221; application such as network passwords, etc. That sort of thing.<\/td><\/tr>\r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_742_1('footnote_plugin_tooltip_742_1_4');\"><a id=\"footnote_plugin_reference_742_1_4\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8673;<\/span>4<\/a><\/th> <td class=\"footnote_plugin_text\">Which doesn&#8217;t hurt to have in case you&#8217;ll need it too.<\/td><\/tr>\r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_742_1('footnote_plugin_tooltip_742_1_5');\"><a id=\"footnote_plugin_reference_742_1_5\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8673;<\/span>5<\/a><\/th> <td class=\"footnote_plugin_text\">Because if you just stick to the default install, and it so happens that a bunch of packages have been updated, you might have to sit through a long update process.<\/td><\/tr>\r\n\r\n <\/tbody> <\/table> <\/div><\/div><script type=\"text\/javascript\"> function footnote_expand_reference_container_742_1() { jQuery('#footnote_references_container_742_1').show(); jQuery('#footnote_reference_container_collapse_button_742_1').text('\u2212'); } function footnote_collapse_reference_container_742_1() { jQuery('#footnote_references_container_742_1').hide(); jQuery('#footnote_reference_container_collapse_button_742_1').text('+'); } function footnote_expand_collapse_reference_container_742_1() { if (jQuery('#footnote_references_container_742_1').is(':hidden')) { footnote_expand_reference_container_742_1(); } else { footnote_collapse_reference_container_742_1(); } } function footnote_moveToReference_742_1(p_str_TargetID) { footnote_expand_reference_container_742_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } } function footnote_moveToAnchor_742_1(p_str_TargetID) { footnote_expand_reference_container_742_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } }<\/script>","protected":false},"excerpt":{"rendered":"<p>As iPhone users know, iTunes&#8217; backup facility is sketchy at best; It can corrupt backups, it can be ridiculously slow, and on a personal note; I don&#8217;t like the idea of &#8220;trace files&#8221; creeping into a newly restored device. So I&#8217;ve decided to outline a &#8220;workflow&#8221; I personally use whenever I&#8217;m up for a restore &hellip; <p class=\"link-more\"><a href=\"http:\/\/nargalzius.com\/blog\/archives\/2008\/08\/31\/fast-clean-and-reliable-iphone-backups\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Fast, clean and reliable iPhone backups&#8221;<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[4,9,13],"tags":[95,116,313,602],"class_list":["post-742","post","type-post","status-publish","format-standard","hentry","category-general","category-nargalzius","category-technology","tag-appbackup","tag-backup","tag-cydia","tag-iphone"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/posts\/742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/comments?post=742"}],"version-history":[{"count":0,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/posts\/742\/revisions"}],"wp:attachment":[{"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/media?parent=742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/categories?post=742"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/nargalzius.com\/blog\/wp-json\/wp\/v2\/tags?post=742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}