{"id":278,"date":"2007-11-03T18:39:04","date_gmt":"2007-11-03T22:39:04","guid":{"rendered":"http:\/\/blogs.n1zyy.com\/n1zyy\/2007\/11\/03\/mirror-idea\/"},"modified":"2007-11-03T18:39:04","modified_gmt":"2007-11-03T22:39:04","slug":"mirror-idea","status":"publish","type":"post","link":"https:\/\/blogs.n1zyy.com\/n1zyy\/2007\/11\/03\/mirror-idea\/","title":{"rendered":"Mirror Idea"},"content":{"rendered":"<p>My server is allowed 1 terabyte of transfer a month. I would be <em>shocked<\/em> if I exceeded 10 GB any month.<\/p>\n<p>Lots of services need mirrors. I&#8217;m becoming re-interested in streaming radio stations. Some of the good ones have limited bandwidth and fill up. Most open-source packages have a series of mirrors, too. Most distributions have elaborate mirror networks, in fact.<\/p>\n<p>Here&#8217;s what someone should do. Set up a mirror &#8216;controller.&#8217; I hit a generic name like us.something.com wanting to download <em>something<\/em> from a US mirror. This goes on all the time, and DNS does round-robin &#8216;load balancing&#8217; across mirrors.<\/p>\n<p>But you take it a little further. As a site admin with 900+ GB of bandwidth going unused each year, I can sign up and say, &#8220;I&#8217;ll take up to 25 GB a day,&#8221; and &#8220;I can spare 6 GB of disk space for mirrors,&#8221; and select a list of matching projects. I might end up hosting an Ubuntu mirror. I install a daemon on my server that communicates with the mirror network, but when someone someone hits the us.whatever.com pool, I&#8217;m in the list. <em>But<\/em>, it&#8217;ll detect that it&#8217;s forwarded me enough traffic for the day and pull me out. Furthermore, the daemon on my machine can also send a &#8220;temporarily remove me&#8221; notice, either for a duration of time or until further notice. That alleviates my final fear: that I won&#8217;t exceed disk quotas or bandwidth, but that serving all those files will really tax my system. When to send the signals is entirely up to me.<\/p>\n<p>I&#8217;d like to volunteer to help, but I don&#8217;t want to blindly commit to something. And because I don&#8217;t see any good way to let me commit to help <em>within my means<\/em>, I have at least 20 GB of disk space and 900 GB of bandwidth that the community can&#8217;t use.<\/p>\n<p>It seems like it wouldn&#8217;t be that hard, either. It might require a little more CPU power on the part of the mirror network management, but it&#8217;s not exceedingly complex. I think a simple PHP script might be easiest&#8230; You load, say, us.project.com\/project\/latest.tar.gz, but latest.tar.gz is actually a script that grabs a list of available mirrors and throws a redirect to the file on one of the mirrors.<\/p>\n<p>The irony is that the argument against this idea &#8212; that it&#8217;d require more servers &#8212; is exactly what the problem is trying to solve.<\/p>","protected":false},"excerpt":{"rendered":"<p>My server is allowed 1 terabyte of transfer a month. I would be shocked if I exceeded 10 GB any month. Lots of services need mirrors. I&#8217;m becoming re-interested in streaming radio stations. Some of the good ones have limited &hellip; <a href=\"https:\/\/blogs.n1zyy.com\/n1zyy\/2007\/11\/03\/mirror-idea\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,18,22,24],"tags":[],"class_list":["post-278","post","type-post","status-publish","format-standard","hentry","category-computers","category-ocd","category-programming","category-rants-raves"],"_links":{"self":[{"href":"https:\/\/blogs.n1zyy.com\/n1zyy\/wp-json\/wp\/v2\/posts\/278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.n1zyy.com\/n1zyy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.n1zyy.com\/n1zyy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.n1zyy.com\/n1zyy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.n1zyy.com\/n1zyy\/wp-json\/wp\/v2\/comments?post=278"}],"version-history":[{"count":0,"href":"https:\/\/blogs.n1zyy.com\/n1zyy\/wp-json\/wp\/v2\/posts\/278\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.n1zyy.com\/n1zyy\/wp-json\/wp\/v2\/media?parent=278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.n1zyy.com\/n1zyy\/wp-json\/wp\/v2\/categories?post=278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.n1zyy.com\/n1zyy\/wp-json\/wp\/v2\/tags?post=278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}