{"id":66,"date":"2021-04-19T21:27:11","date_gmt":"2021-04-19T21:27:11","guid":{"rendered":"http:\/\/www.dcellular.net\/blog\/?p=66"},"modified":"2021-04-20T18:31:02","modified_gmt":"2021-04-20T18:31:02","slug":"apple-time-machine-network-backups-with-a-raspberry-pi-4","status":"publish","type":"post","link":"https:\/\/www.dcellular.net\/blog\/?p=66","title":{"rendered":"Apple Time Machine Network Backups with a Raspberry Pi 4"},"content":{"rendered":"\n<p>This guide will cover how to leverage a Raspberry Pi and a Linux software RAID 5 to perform automatic Time Machine backups for your Mac over the network. While creating a Time Machine backup with a Raspberry Pi has been covered before, I put my own spin on this as I had some old drives laying around from when I upgraded my Plex server and wanted a reference for setting up a Linux software RAID using mdadm. <\/p>\n\n\n\n<p>The transition to working from home full time has forced a lot of us to re-evaluate our normal workflow. As my laptop now spends nearly 100% of its time plugged in and sitting on the desk, I decided to minimize the number of peripherals that need to be plugged into it. Specifically, I no longer need to carry around a back-up hard drive and I did not want it sitting on my desk 24\/7.<\/p>\n\n\n\n<p>This can be done using any model of Raspberry PI however I strongly recommend using a Raspberry Pi 4 to take advantage of its support for full gigabit ethernet and USB 3.0. Backups can take a prolonged period of time and we want to maximize our throughput.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware needed:<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Raspberry Pi 4 (Any model)<\/li><li>Raspberry Pi POE Hat<\/li><li>At least 3 hard drives (All the same size, I used 5)<\/li><li>USB3 External Hard Drive Bay (I used this one: <a href=\"https:\/\/www.amazon.com\/dp\/B071ZP2HFK\/ref=cm_sw_em_r_mt_dp_714FM08EXEHBVJ0CNM3B?_encoding=UTF8&amp;psc=1\" data-type=\"URL\" data-id=\"https:\/\/www.amazon.com\/dp\/B071ZP2HFK\/ref=cm_sw_em_r_mt_dp_714FM08EXEHBVJ0CNM3B?_encoding=UTF8&amp;psc=1\">https:\/\/www.amazon.com\/dp\/B071ZP2HFK\/ref=cm_sw_em_r_mt_dp_714FM08EXEHBVJ0CNM3B?_encoding=UTF8&amp;psc=1<\/a>)<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Raid Configuration:<\/h2>\n\n\n\n<p>Begin with updating your Pi and installing <em>mdadm<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo apt update &amp;&amp; apt upgrade -y\npi@raspberrypi:~ $ sudo apt install mdadm -y<\/pre>\n\n\n\n<p>Add your drives into the drive bays and plug the enclosure into the Pi. SSH to it remotely or open a terminal locally. Once plugged in, list out the available drives using<strong> <\/strong><em>lsblk<\/em>. Note that the drives will appear as<em> \/dev\/sdx<\/em> and differ from the SD card at <em>\/dev\/mmcblk0.<\/em><\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT\nsda           8:0    0  1.8T  0 disk\nsdb           8:16   0  1.8T  0 disk\nsdc           8:32   0  1.8T  0 disk\nsdd           8:48   0  1.8T  0 disk\nsde           8:64   0  1.8T  0 disk\nmmcblk0     179:0    0 28.8G  0 disk\n\u251c\u2500mmcblk0p1 179:1    0  256M  0 part  \/boot\n\u2514\u2500mmcblk0p2 179:2    0 28.5G  0 part  \/<\/pre>\n\n\n\n<p>With the five available 2TB drives (reported as 1.8T by the OS), we will create the array in a RAID 5 configuration using mdadm.<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo mdadm --create --verbose \/dev\/md0 --level=5 --raid-devices=5 \/dev\/sda \/dev\/sdb \/dev\/sdc \/dev\/sdd \/dev\/sde<\/pre>\n\n\n\n<p>The RAID array will start the build process and can be viewed with <em>cat \/proc\/mdstat.<\/em><\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ cat \/proc\/mdstat\nPersonalities : [raid6] [raid5] [raid4]\nmd0 : active raid5 sde1[5] sdc1[2] sda1[0] sdd1[3] sdb1[1]\n      7813525504 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5\/5] [UUUUU]\n      [=======>.............]  recovery = 26.3% (1924851\/104038498) finish=7.3min speed=200808K\/sec\n\nunused devices: &lt;none><\/pre>\n\n\n\n<p>One nice perk of <em>mdadm<\/em> is that we can continue to interact with the RAID while it is building. Time Machine requires Apple\u2019s proprietary Hierarchical File System (HFS) so we will need to install the required utilities on the Raspberry Pi for interoperability.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo apt install hfsutils hfsprogs netatalk -y<\/pre>\n\n\n\n<p>With HFS+ support installed, format the drive to HFS+ with <em>mkfs<\/em> in Linux.<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo mkfs.hfsplus \/dev\/md0 -v timeCapsule<\/pre>\n\n\n\n<p>If we run <em>lsblk<\/em> again, we should see our five drives configured in a RAID.<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: plain; notranslate\">NAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT\nsda           8:0    0  1.8T  0 disk\n\u2514\u2500sda1        8:1    0  1.8T  0 part\n  \u2514\u2500md0       9:127  0  7.3T  0 raid5 \nsdb           8:16   0  1.8T  0 disk\n\u2514\u2500sdb1        8:17   0  1.8T  0 part\n  \u2514\u2500md0       9:127  0  7.3T  0 raid5 \nsdc           8:32   0  1.8T  0 disk\n\u2514\u2500sdc1        8:33   0  1.8T  0 part\n  \u2514\u2500md0       9:127  0  7.3T  0 raid5 \nsdd           8:48   0  1.8T  0 disk\n\u2514\u2500sdd1        8:49   0  1.8T  0 part\n  \u2514\u2500md0       9:127  0  7.3T  0 raid5 \nsde           8:64   0  1.8T  0 disk\n\u2514\u2500sde1        8:65   0  1.8T  0 part\n  \u2514\u2500md0       9:127  0  7.3T  0 raid5 \nmmcblk0     179:0    0 28.8G  0 disk\n\u251c\u2500mmcblk0p1 179:1    0  256M  0 part  \/boot\n\u2514\u2500mmcblk0p2 179:2    0 28.5G  0 part  \/<\/pre>\n\n\n\n<p>Now we need to create the directory to mount our new RAID disk. Create it using the following command:<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo mkdir \/srv\/TimeCapsule<\/pre>\n\n\n\n<p>Before mounting we need the UUID of the drive. Take note of the entry that points to <em>..\/..\/md0<\/em> as we will need to add this to <em>\/etc\/fstab<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ ls -alh \/dev\/disk\/by-uuid\/\ntotal 0\ndrwxr-xr-x 2 root root 100 Apr 13 01:08 .\ndrwxr-xr-x 7 root root 140 Apr 13 01:08 ..\nlrwxrwxrwx 1 root root  15 Mar  4 23:04 7581-8A48 -> ..\/..\/mmcblk0p1\nlrwxrwxrwx 1 root root   9 Apr 13 01:08 e89b1b71-39e3-3632-b4cb-3eed298133e6 -> ..\/..\/md0\nlrwxrwxrwx 1 root root  15 Mar  4 23:04 fa37d505-e741-4d35-bcec-4580aef395e1 -> ..\/..\/mmcblk0p2\n<\/pre>\n\n\n\n<p>Open up <em>\/etc\/fstab<\/em> with a text editor and add a line to automatically mount the drive to <em>\/srv\/TimeCapsule<\/em><strong> <\/strong>on boot or reboot:<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: plain; notranslate\">proc            \/proc           proc    defaults          0       0\nPARTUUID=83c4223d-01  \/boot           vfat    defaults          0       2\nPARTUUID=83c4223d-02  \/               ext4    defaults,noatime  0       1\nUUID=e89b1b71-39e3-3632-b4cb-3eed298133e6 \/srv\/TimeCapsule hfsplus force,rw,user,noauto 0 0\n# a swapfile is not a swap partition, no line here\n#   use  dphys-swapfile swap[on|off]  for that<\/pre>\n\n\n\n<p>Mount the RAID disk at the directory:<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo mount \/srv\/TimeCapsule\/<\/pre>\n\n\n\n<p>If no output returns, the mount is successful. You can validate it by running <em>lsblk<\/em> to verify that <em>md0 <\/em>has a mount point set to <em>\/srv\/TimeCapsule<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ lsblk\nNAME        MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT\nsda           8:0    0  1.8T  0 disk\n\u2514\u2500sda1        8:1    0  1.8T  0 part\n  \u2514\u2500md127     9:127  0  7.3T  0 raid5 \/srv\/TimeCapsule\nsdb           8:16   0  1.8T  0 disk\n\u2514\u2500sdb1        8:17   0  1.8T  0 part\n  \u2514\u2500md127     9:127  0  7.3T  0 raid5 \/srv\/TimeCapsule\nsdc           8:32   0  1.8T  0 disk\n\u2514\u2500sdc1        8:33   0  1.8T  0 part\n  \u2514\u2500md127     9:127  0  7.3T  0 raid5 \/srv\/TimeCapsule\nsdd           8:48   0  1.8T  0 disk\n\u2514\u2500sdd1        8:49   0  1.8T  0 part\n  \u2514\u2500md127     9:127  0  7.3T  0 raid5 \/srv\/TimeCapsule\nsde           8:64   0  1.8T  0 disk\n\u2514\u2500sde1        8:65   0  1.8T  0 part\n  \u2514\u2500md127     9:127  0  7.3T  0 raid5 \/srv\/TimeCapsule\nmmcblk0     179:0    0 28.8G  0 disk\n\u251c\u2500mmcblk0p1 179:1    0  256M  0 part  \/boot\n\u2514\u2500mmcblk0p2 179:2    0 28.5G  0 part  \/<\/pre>\n\n\n\n<p>With the drive mounted, configure permissions so that we can write to it without requiring root privileges:<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo chown pi:pi \/srv\/TimeCapsule<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Time Machine Configuration:<\/h2>\n\n\n\n<p>Configure <em>\/etc\/nsswitch.conf <\/em>and add <em>mdns mdns4<\/em> to the end of the <em>hosts:<\/em> line:<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo vim \/etc\/nsswitch.conf\n# \/etc\/nsswitch.conf\n#\n# Example configuration of GNU Name Service Switch functionality.\n# If you have the `glibc-doc-reference' and `info' packages installed, try:\n# `info libc \"Name Service Switch\"' for information about this file.\n\npasswd:         files\ngroup:          files\nshadow:         files\ngshadow:        files\n\nhosts:          files mdns4_minimal [NOTFOUND=return] dns mdns mdns4\nnetworks:       files\n\nprotocols:      db files\nservices:       db files\nethers:         db files\nrpc:            db files\n\nnetgroup:       nis\n<\/pre>\n\n\n\n<p>Finally, configure Netatalk to mimic Apple\u2019s Time Capsule in <em>\/etc\/netatalk\/afp.conf<\/em>. Add the mimic model in the <em>[Global]<\/em> block and the path to our mounted Time Capsule volume in the <em>[My Time Machine Volume]<\/em> block. Be sure to remove the semi-colon characters in the <em>[My Time Machine Volume]<\/em> block as well.<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo vim \/etc\/netatalk\/afp.conf\n;\n; Netatalk 3.x configuration file\n;\n\n[Global]\n; Global server settings\n  mimic model = TimeCapsule6,106\n\n; [Homes]\n; basedir regex = \/xxxx\n\n; [My AFP Volume]\n; path = \/path\/to\/volume\n\n[My Time Machine Volume]\n  path = \/srv\/TimeCapsule\n  time machine = yes\n<\/pre>\n\n\n\n<p>Finally, start up the two configured services to broadcast the drive as a Time Capsule and then enable them to start automatically at boot.<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo systemctl start avahi-daemon.service\npi@raspberrypi:~ $ sudo systemctl start netatalk.service\npi@raspberrypi:~ $ sudo systemctl enable avahi-daemon.service\nSynchronizing state of avahi-daemon.service with SysV service script with \/lib\/systemd\/systemd-sysv-install.\nExecuting: \/lib\/systemd\/systemd-sysv-install enable avahi-daemon\npi@raspberrypi:~ $ sudo systemctl enable netatalk.service\nSynchronizing state of netatalk.service with SysV service script with \/lib\/systemd\/systemd-sysv-install.\nExecuting: \/lib\/systemd\/systemd-sysv-install enable netatalk\n<\/pre>\n\n\n\n<p><strong>Note:<\/strong> Occasionally the HFS+ volume will be mounted in read-only mode if the Raspberry Pi restarts. The best explanation I have been able to find is that this is due to journaling with HFS+. I haven&#8217;t been able to find solid support for HFS+ journaling on Linux so the best way to fix this is to unmount and then remount the drive in the following way.<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code brush: bash; notranslate\">pi@raspberrypi:~ $ sudo systemctl stop avahi-daemon.service\npi@raspberrypi:~ $ sudo systemctl stop netatalk.service\npi@raspberrypi:~ $ sudo umount \/srv\/TimeCapsule\npi@raspberrypi:~ $ sudo mount -t hfsplus -o force,rw \/srv\/TimeCapsule\npi@raspberrypi:~ $ sudo systemctl start avahi-daemon.service\npi@raspberrypi:~ $ sudo systemctl start netatalk.service<\/pre>\n\n\n\n<p>Pivot back to your Mac host and you should be able to directly connect to the Raspberry Pi using the same credentials via the GUI by navigating to Finder &gt; Go &gt; Connect to server\u2026<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"http:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.22.11-AM.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.22.11-AM-1024x587.png\" alt=\"\" class=\"wp-image-78\" width=\"630\" height=\"361\" srcset=\"https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.22.11-AM-1024x587.png 1024w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.22.11-AM-300x172.png 300w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.22.11-AM-768x441.png 768w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.22.11-AM.png 1196w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"http:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.18.03-AM.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.18.03-AM-1024x661.png\" alt=\"\" class=\"wp-image-84\" width=\"768\" height=\"496\" srcset=\"https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.18.03-AM-1024x661.png 1024w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.18.03-AM-300x194.png 300w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.18.03-AM-768x496.png 768w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.18.03-AM.png 1084w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Once connected, open up Time Machine Preferences, click \u201cSelect Disk\u201d and choose your newly created Time Machine volume. For transparency, the screenshot shows my other time machine volume next to the newly created one.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><a href=\"http:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.26.12-AM-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.26.12-AM-1-1024x746.png\" alt=\"\" class=\"wp-image-89\" width=\"768\" height=\"560\" srcset=\"https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.26.12-AM-1-1024x746.png 1024w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.26.12-AM-1-300x218.png 300w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.26.12-AM-1-768x559.png 768w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.26.12-AM-1-1536x1119.png 1536w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.26.12-AM-1-1200x874.png 1200w, https:\/\/www.dcellular.net\/blog\/wp-content\/uploads\/2021\/04\/Screen-Shot-2021-04-19-at-11.26.12-AM-1.png 1560w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>That&#8217;s it! You should be up and running now and you can forget about every having to plug a backup drive into your computer again.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final Thoughts:<\/h2>\n\n\n\n<p>This solution works pretty well for me and has been running stable for the last year. In the future, I may add some more granular permissions for each user that will be backing up to this rather than have a single account for everyone to use to connect to the Pi. Additionally, I am interested to hear if anyone has a better solution than un-mounting and re-mounting the volume and restarting the services when it becomes read-only. I&#8217;ve tried the cronjob solution without any luck.<\/p>\n\n\n\n<p>References:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>I pulled heavily from Gregology initially but his fixes for the drive becoming read-only did not work for me. <a href=\"https:\/\/gregology.net\/2018\/09\/raspberry-pi-time-machine\/\">https:\/\/gregology.net\/2018\/09\/raspberry-pi-time-machine\/<\/a><\/li><li>The Linux Raid Wiki has a wealth of info about managing your software Raid. <a href=\"https:\/\/raid.wiki.kernel.org\/index.php\/Linux_Raid\">https:\/\/raid.wiki.kernel.org\/index.php\/Linux_Raid<\/a><\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This guide will cover how to leverage a Raspberry Pi and a Linux software RAID 5 to perform automatic Time Machine backups for your Mac over the network. While creating a Time Machine backup with a Raspberry Pi has been covered before, I put my own spin on this as I had some old drives &hellip; <a href=\"https:\/\/www.dcellular.net\/blog\/?p=66\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Apple Time Machine Network Backups with a Raspberry Pi 4&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-66","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/66","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=66"}],"version-history":[{"count":24,"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/66\/revisions"}],"predecessor-version":[{"id":96,"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/66\/revisions\/96"}],"wp:attachment":[{"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=66"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=66"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dcellular.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=66"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}