Background:
I'm a high school student. I've noticed lately that I'm not particularly fond of my current scheme for keeping my files up to date (ferrying around a USB stick, naming files 'essay-1.doc', 'essay-2.doc', 'essay-2_(new).doc', etc.).

I'm currently looking for a better way of keeping my files synchronized and backed up between different computers while being able to cleanly store different versions of a file without resorting to haphazard naming schemes.

13 Answers
13

I use Dropbox for a long time and I am very happy with it. I follow the following process:

I've Dropbox installed and all my projects are in the Dropbox folder, so they are synchronized. If I don't have Dropbox installed, I use a web browser to upload or download my files. The nice thing with Dropbox is that you can access your files everywhere. You don't need to install the software all the time.

For the projects where I write code, I also use Subversion (SVN). My projects are also under the Dropbox folder. Since I usually work with MATLAB, and it doesn't create executables each time I run my code, it is OK for me to keep my files under Dropbox. If the code generates outputs each time I run, I select the temporary output folders outside of my Dropbox folder. But as I said, I don't need to do it for most of my projects.

You didn't ask for it, but it may be relevant. I suppose you also read a lot for your homeworks. To hold the materials that I read, I use Mendeley. It is a wonderful reference management system. It gives you free 500 MB space, but I use Dropbox instead because I want all my files under my hand. I created a folder named as Mendeley in my Dropbox folder, and configured the working folder of Mendeley such that all the PDFs and other files I upload on Mendeley are renamed and saved in this folder. So, all my reading materials are synchronously saved, and I don't need to take care of them separately. Similar to my projects, I can access my reading materials online. And all the notes I take are saved in Mendeley which I again access online if I need.

I think the key that Dropbox can be used exclusively as a website is a great one to point out.
–
Jeanne Boyarsky♦Nov 4 '11 at 3:00

I think I'll go with this one. I forget my USB from time to time, so being able to access Dropbox from the internet is definitely a plus. I'll look into Mendeley too, although I'm not sure if I'll need to use it that much at this current moment in time.
–
Michael0x2aNov 8 '11 at 0:50

1

You can also exclude subfolders from Dropbox sync which can be useful when you work on dev projects which need to be built often - just exclude the build folders from sync. (I assume you know how to do ignore with SVN for these purposes)
–
Dmitry SelitskiyFeb 13 '12 at 2:48

I've been using this method at work for several weeks and it's helped immensely.

The main advantage of a VCS over carefully named files (as I suggested here in an answer you already saw), is that a VCS will store meta data, so you can capture what's changed. To get an exact was-is you'll need to use something like the compare feature in MS Word, but in practice I've found that good commit notes are enough to remember what you changed from version to version.

Mercurial by itself doesn't require admin rights (although the TortoiseHg extension might), but for what you're probably doing the command line interface would be easy enough to learn: add, commit, and rename are probably 95% of your use case.

As for keeping things sync'ed between multiple computers I see two options.

Store the repository on a server folder and work from that (as as mapped drive or something).

Sign up for a free (for 1 person) Kiln account and let them host your repository.

Regarding binaries, I'll answer from the Hg perspective, since I know that best. But this is probably wholly or mostly applicable to anything you choose.

Hg itself has no problem storing binaries. Storage won't be as efficient as plain text because it can't store deltas, but any scheme that saves multiple revisions of a binary format (e.g. docx or jpg) is going to have the same issue (so at least you're no worse off).

Binaries won't diff and merge easily like plain text, but that's a problem with binary file formats not the VCS. I've heard there are ways to configure Hg to use MS Office diff/merge utilities, but I can't figure it out. And you're unlikely to need to merge anyway since you're the only "developer".

This was absolutely essential for me in college and would work much better for a student than dropbox. Sure, you don't have to install dropbox on a computer to use it, but you still have to waste time downloading the file, changing it, and uploading it again. Google Docs don't require any of that.
–
YettiFeb 1 '12 at 17:50

Are you required to use ppt and docx files? Proprietary formats have many disadvanges; plain text is generally preferable. Also, of course, version control works better with plain text. Consider using TeX/LaTeX or a similar text based typesetting system if possible. Bear in mind that while text formats can be converted to proprietary formats with little difficulty, the reverse is not always so easy. While TeX/LaTeX is dominant in the hard sciences and engineering, it is not the only game in town. A reasonable halfway house is to use a document format that is text under the hood. For example, I believe open office format is gzipped XML files.

As regards version control, personally I use Mercurial (since spring 2006) and would recommend distributed version control to anyone who uses a computer and manipulates text. This includes many people, at least in the developed world, including most people with a high school education. It is a mystery to me why so many of these people don't use any form of version control.

Personal history: I started using version control only relatively recently, during the spring of 2003, but now cannot imagine my life without it. I started with Subversion, but since 2006 I have used Mercurial exclusively. I greatly prefer distributed version control to a centralized model like Subversion, but even Subversion is way better than no version control at all. I'd recommend Mercurial - I think Git is similar, but may have a steeper learning curve. Also Mercurial may work better on Windows. I'd experiment and see which one you prefer. I estimate that using a decent verson control system enhances your productivity on the order of 10% or more over the long term, with significant gains in terms of organization and book-keeping, among other things. The overhead of learning VCS is negligible in comparison, though it does require some basic level of computer literacy.

Note also that version control works just fine with proprietary formats. It just means you won't be able to use a native diff, but Mercurial and presumably Git can be configured to use an external diff, assuming such a thing exists for these proprietary formats. So, I wouldn't let that stop you.

I do subject-date-version but I also start a new subdirectory each marking period or quarter. (Now that I'm not a student I just start a new directory each year "Writing 2010", "Writing 2011", etc). This works well because I find I rarely need to access old documents; and when I do I know them by date.
–
TomOnTimeNov 8 '11 at 19:28

It is an excellent solution. I started using it when studying, at the university I was working at my laptop and at home I was using my desktop. It was very nice to have the same content on both placees. You can then put as many git repositories within the directories you sunchronize with unison for things that you want source control of.
–
hlovdalDec 8 '11 at 22:39

I've used Subversion (svn) for nearly three years, so my opinion is undoubtedly both biased an lacking in scope, but here it is anyway:

You could install subversion on your server, and TortoiseSVN on the "clients". As I recall, TortioseSVN doesn't require admin access; still, I couldn't find that written down anywhere, so take it with the proverbial grain of salt.

Tortoise will add 3 entries on the contextual menu: Update, Commit, which are self-explanatory, and TortoiseSVN, which opens a large (20+ for folders, about 15 for a file) submenu; the most useful thing in there is Show Log; this will open a window with all changes made to the folder or document on which you started the menu in the first place.

For files, there's also Show Differences, which is very useful with user-readable files, but not so great for .docs. I'm just adding it here as an afterthought; when it comes to versioning docs, the description you'll have to write on commit is probably the most useful when it comes to remmbering what you changed.

Edit: And if that don't work, how about date/time suffix on files? That works too...

You need to look just a bit further. Google Docs, as already mentioned, has great version control and commenting options that help you take notes about your work and show all changes. This is all thanks to Google buying a company called Etherpad and using their software.

The problem with Google Docs is formatting. The saved documents are generally not formatted right for MS word and that's a problem for a student. Enter live.com

Windows overshadowed Google Docs and built online document, PowerPoint and Excel editing tools and gave you 25 GB of free storage and quick synchronisation with MS Office products (make a change to your local copy and upload immediately). This preserves the format of the files as well, so they come out beautifully when you need to print or present them.

Writeboard is free, and web based so you don't have to drag anything around with your, easily save an iteration as a new revision, take a few minutes to learn markdown and just do your writing on the web. When you're done just copy and paste from the HTML page into open office or whatever, and do a little restyling.

You could take a look at Flashbake, which is a seamless version control system built on top of git. In essence it makes periodic commits to a git repo of all changes that have been made. The point of it is to have running in the background, incrementally saving your work with notes on the conditions of that save. It uses python and git, and you could pretty easily have git push those commits to some remote repo as well. I've always been curious about it, but never really made a big push to use it heavily.

I use Windows Live Mesh, it works great. You set it up one time on each computer where you want to have access to your files, and never look at it again. Your files are always automatically synced. As a bonus, all your synced files are also available on the web in your windows live skydrive account.

Skydrive does have revision tracking and Live Mesh used to have it, but it is gone for the moment. Perhaps it will return in a future version.

I'm using a version control system, in my case CVS, but that's just because I happen to be most familiar with this one, and like being able to access the underlying files manually if needed. The main advantage of using a version control systems (VCS) to me is, that it allows (or even enforces) commenting versions checked in, so you'll know later on at which stage of work a certain version has been, and can select the version you may need for further development.

Also, most modern VCSs allow collaborative work, which may be of importance when you're working on a project together with a group, or want to give a teacher access to an early draft for correction, or a friend for proof-reading.
Which VCS doesn't matter as much as that it fits your style of work, and that you're comfortable using it.

VCSs are best at storing text-based files, where they can keep track of the differences from version to version. Confronted with binary files, such as bitmap images, they can usually do little more than store one blob after the other together with a timestamp and your manually provided version information. So, if you expect binary data to change often, they're not much of an improvement, and tend to fill up your data storage.

Given the resources you mention, it seems that you might be best off with something making use of your webserver, so it might be a good idea to explore which versioning tools you can use there. You don't tell if you're limited by scripting language, choice of database or other possible requirements, but there's a few wikis you might consider which also offer version control over text and attachments.
Things to explore include:

WebDAV/DeltaV (WebDAV was supposed to be a "Distributed Authoring and Versioning" filesystem, unfortunately the "Versioning" Part of the Filesystem never got specified and didn't really catch on. Hence the concept was reworked as "DeltaV", problem being that there isn't much software around implementing it.)

FosWiki is file-based, and applies version control to both wiki articles and attachments.

If you don't mind giving your data to another site, LibreSouce (http://dev.libresource.org/) looks like a good example of what can be done on a webserver (found through an article comparing several VCSs, 7 Version Control Systems Reviewed)