Google+

Using Unlimited OneDrive Space for Backups

Recently, Microsoft announced they're increasing OneDrive from 1 Terabyte, to unlimited. Unlimited as in infinity, endless, never ending, vast. You get the point. The only catch is that you have to have an Office 365 account. Considering you can get one for as little as $69.99/year, this is a phenomenal deal even if you don't use Office. If you get the 5 user edition for $99.99, you'll get unlimited space for everyone in your household. That's like 5 infinities! Kids know that the more infinities you have, the better.

The killer feature for OneDrive is that the files you store in it don't have to actually take up any space on your hard drive. After a file sits unused for some time, it can switch to an online-only mode. It will still appear to be on your computer, but it takes up zero space. For example, my OneDrive folder has 100+ GB on it, but on my laptop, it only takes up 307 MB on disk. When I try to open a file that's not actually on this computer, it will automatically pull the file down and make it available offline. It's all transparent to the user. This is a big improvement over the selective sync option in Dropbox.

Virtual Drive Space Screenshot

Now for the bad news. On my desktop, I have a 9 TB storage array, and a 512 GB SSD. My photo collection has ballooned in size, and is now well over 200 GB. If I were to simply copy these files into my OneDrive, I would both fill up my SSD, and the files would ultimately end up online-only. I want to have quick (read: local) access to all these files.

My first thought was to use robocopy, a powerful file copy utility included with Windows. My hope was that I could maintain a backup copy in my OneDrive, and simply mirror the new photos as they were added. I tried every combination of command line parameters, but I always ran into errors from robocopy (file cannot be accessed by the system) because it wasn't designed to work with files that only appear to exist.

Then, a breakthrough. I learned that OneDrive supports WebDAV. WebDAV is a protocol that runs on HTTP and allows you to open a remote resource as a folder in Explorer. It let's you do tricks like open a SharePoint document collection in an Explorer window.

Mounting OneDrive as a Folder

First, you'll need a special ID, called a cid to make this work. It's easy to get, just go to OneDrive.com, and click Files. In the URL, grab the cid value after the equals sign.

CID

Next, open an explorer window, navigate to your computer ("This PC"), and click "map network drive" in the ribbon.

Map Network Drive

The drive you're mapping is https://d.docs.live.net/YOUR_CID/, be sure to enter your CID in that URL.

Map Drive Details

When prompted for a username/password, use your live ID for the username. For the password, you can use your live password if you don't have 2-factor authentication enabled. If you DO have 2-factor authentication, generate an app password here.

Congratulations, you now have OneDrive mapped as a drive on our computer. This is different than the typical OneDrive folder, because changes on this drive are reflected immediately in the cloud.

WebDAV Drive

Robocopy

Now that we have a drive that takes up no space on our computer, but allows us to copy files to it without affecting our local copy, our work is easy.

For my photos folder, I run the following command line script:

Robocopy e:\photography "z:\backup\photography" /m /e /purge /mt

Command Line

Here is an explanation of the parameters I'm using:

  • e:\photography - The source of the files I would like to backup.
  • z:\backup\photography - The destination of the backup in OneDrive.
  • /m - Only copy files that have been modified. The archive bit on the file will indicate this, and will be reset.
  • /e - Include subfolders.
  • /purge - Delete files that have been removed in the source. You may choose to skip this so that accidental deletes won't propagate.
  • /mt - Use multiple threads. This speeds up the upload by a large factor.

Performance

Performance of WebDAV is not that great to be honest. Navigating around the drive is an exercise in frustration, but it wasn't designed to be used that way.

Performance of copying the files is alright. I've let it run overnight and it copied up a few gigs. After the initial load, the speed won't be an issue. But truthfully, I don't need it to be fast. It's just an additional backup.

Summary

Everyone repeat after me. OneDrive is NOT a backup solution. That being said, it can be part of a balanced backup diet.

You should always have an additional off-site backup, more are better. I rotate external drives for this purpose.

Update 2014-11-07

I found out WebDAV is messing up the destination timestamps, which makes the subsequent backups overwrite files that haven't changed. I've updated the robocopy paramters to use the archive bit on the files. Keep in mind that the archive bit doesn't work if you have multiple backup processes using it.

Update 2004-11-09

Added the /mt flag, which speeds this up 5x-10x.

Like this post? Please share it!

See a mistake? Edit this post!

Do It in Public

How many times have you run into a problem with your code? Stuck so bad you can't think about anything else. As time goes on, you get more desperate, changing your search terms, Looking for any glimmer of hope. You reach a point of desperation where you'll cut and paste any code you can find in the hopes that you'll get closer to the answer.

Conversely, how many times have you created a new console app to create a quick and dirty proof of concept? If it worked, where did you put that code?

I've been thinking about writing this for some time. Over the past few months, I've gotten in the habit of publishing every proof of concept, every sample project, and every demo. It feels great. I even started a podcast just to have more public discussions.

GitHub Activity

I know what you're thinking - it takes too much time and I have work to do. It takes much less time than you think, and the ROI will make it worthwhile. Get out there, create your GitHub account.

When you create a GitHub project, all you really need is a name, but ideally it should also have a readme file. I used to think this was a hassle, but I've come to realize that it's actually worth the time investment. When you have to explain a piece of code to someone else, it forces to you think just enough to ensure that it makes sense. For my quick and dirty test project, this may be just a single sentence. If it's throwaway code, just be honest and mention that.

Your code doesn't need to be perfect, and if you are afraid of public criticism, get over it. You need to focus on the developers that are desperately looking for a fix to their problem.

Scott Hanselman had a similar thought on his blog recently:

I hear several times a week things like "I'm not ready for people to see my code." But let me tell you, while it may be painful, it will make you better

Since using GitHub for my sample projects, I've found some other significant benefits:

  • Easy to email & share - When a coworker asks how to solve a problem I've already solved, I'm able to look at my GitHub account, even if I'm on my phone. I can grab a URL of the relevant file, and email a link.
  • Free backup - Over the years, as I've switched computers, I've lost a lot of code I wish I had saved. Putting it on GitHub, ensures that I can access it at any point in the future without having to worry about keeping backups.
  • Work from multiple computers - I've found it extremely helpful to create a proof of concept on one machine, and then pull it down to another as reference.

Stop making excuses. Contribute back to the community.

Like this post? Please share it!

See a mistake? Edit this post!

7 Things the Surface Pro 3 Can Do Better than Your Laptop

I've been using a Surface Pro 3 for a few days now (borrowing it from my wife until I get my own). I wanted to show some of the scenarios that the kickstand, the pen, and the form factor provide. I do work at Microsoft, but I'm free to use any type of device I wish, and I don't work for the Surface team.

The Surface Pro 3 is often a misunderstood device, and let's face it, it's a difficult product to explain and market. The way I see it is that at the low end of $799, it's a replacement for the high-end iPad market. The midrange models are extremely capable laptop and tablet killers, and the high-end models can handle pretty much anything.

1. Scan and Annotate

The Surface Pro is an amazing note-taking device and it opens up some new scenarios that may not be immediately obvious.

Let's say we have an interesting document in our hands, and we want to mark it up. We may be able to use a standard pen to write on the document itself, but there are times when we can't write on it, or we simply want to go paperless. The Office Lens app turns your phone into a scanner in your pocket. For example, you can scan in a sheet of paper or a whiteboard, and it will do edge detection, and it will also try to remove the background when possible.

OneNote Scan Annotation

Using my phone and the Office Lens app, I scanned in a sheet of paper and hit save, which sent it to OneNote. Within seconds, the scan was available in OneNote on my Surface. I was then able to use my pen to annotate the document.

Alternatively, you can use the camera built into the Surface itself.

2. Use on-screen keyboard in reclined position

Thanks to the new kickstand design, you can position the Surface Pro 3 to be slightly angled (nearly flat). This is useful when drawing, but I have found that it also provides the best angle for typing. I've seen people that were able to type on a tablet laying flat, but I found that to be very difficult without tacticle feedback.

Surface Pro 3 Reclined

Magic floating pen?

I often remove the keyboard and walk around with the Surface to use it as a consumption device. While you won't find the on-screen keyboard a replacement for a physical keyboard, it can certainly work in a pinch thanks to the new angles.

3. Use the Pen as a Whiteboard in a Presentation

Personally, my goal is to minimize the dreaded "death by PowerPoint", and instead focus on code and content. Using a typical whiteboard is often far to small for the audience to see.

The Surface Pro 3 makes a great developer presentation device, and the presenter can switch over to an application like OneNote and write or draw something. Used properly, it can create a more engaging experience.

Presentation Screenshot

4. Keeping your Lap Cool

In a traditional laptop, all of the heat generating components are in the base, or the part that sits on your lap. The result is usually just discomfort in the summer, but in severe cases it can cause skin damage or even reduced fertility.

With the Surface Pro, the parts that touch your body are the kickstand, the bottom edge of the device, and the keyboard. All of these components should be room temperature since they don't create any heat. The heat is allowed to vent vertically, far away from your skin.

5. Gaming

The iPad is great for casual gaming. However, there are 2 large shortcomings. First, the iPad does not have an accurate pointing device. There are capactive pens available, but they don't have anywhere near the same level of accuracy. The Surface pen has sub-millimeter accuracy. Second, the iPad can't run some of the amazing legacy games like one of my all-time favorites, Age of Empires II.

Age of Empires on Surface Pro 3

This game is actually pretty amazing on the Surface. The high resolution screen shows you a good portion of the map and the pen works great for picking single units or grouping multiple units.

6. Extreme Portability

The Surface can replace your laptop and your tablet, but I think that's only part of the story. The Surface power adapter is extremely light. Laptops often have a dirty little secret, which is that they have a huge, heavy power brick.

Just take a look at this beast!

Huge Dell Power Adapter for M6400

I can't find a consistent weight measurement for the Dell M6400 power adapter, but I'm guessing it weighs more than the Surface Pro 3 with a type cover and power adapter. I should also mention that the MacBook Air power supply is very light, and Apple did a great job paying attention to that detail.

Personally, I would love to have a requirement for laptops that they must include the weight of their power supply in the specifications if the device doesn't last an entire day with normal usage. After all, the power supply is something you're likely to need to carry along with you.

The point is that that the Surface Pro 3 is ridiculously light. It's 1.76lbs, the cover is 10 ounces, and the power supply is 6 ounces. The total weight for everything in your bag is 2.78 lbs. It's light enough that the weight of the bag you put it in starts to become a factor.

It's also light enough that you're far more likely to take it with you. Much like the best camera is the one that you have with you, the best computer is the one you have with you.

When you start to consider this is a device that can help you go paperless and can possibly even be your reading device, you realize that you can shed a lot of the load.

7. Detach the Keyboard

The detachable keyboard is one of the fundamental selling points of the Surface Pro 3, yet the commercials did a terrible job showing how powerful this feature is.

I fly occasionally, and due to motion sickness, I usually use the time to catch up on movies. I originally used my Surface 2, but it was an extra device I had to put in my bag in addition to my laptop. Then, I switched to my Nokia Lumia 1520, which has a MicroSD slot, which let me fit 30+ movies on it. This works pretty well, but holding the phone is a bit of a hassle. When I do decide to get some work done, I can't hold the phone and use a laptop at the same time.

With the Surface Pro 3, I can leave it in my bag for the security check. Once on the plane, I can hold it during takeoff, and during the flight I can use the kickstand to sit it on the tray table. The combination of the screen, kickstand, and MicroSD slot, make it the best airplane device for me. If I want to get some work done, I move the movie off to the side, and run visual studio in the rest of the screen. The high-res screen gives me plenty of code real-estate.

Conclusion

I love this device. Its flexibility is exactly what I'm looking for.

Like this post? Please share it!

See a mistake? Edit this post!

Jason Young I'm Jason Young, software developer at heart, technical evangelist for Microsoft by day. This blog contains my opinions, of which my employer may not share.

@ytechieGitHubLinkedInStack Overflow