Ask Slashdot: How Best To Synchronize Projects Between Shared Drive and PCs?
Koookiemonster writes "Our company has many projects, each one with a folder on a Samba drive (Z:\). Our problem is syncing only the programmers' current projects (~30 at any time) between Z:\ and their C:\Projects\-folder on five Windows 7 laptops. If we sync the whole Z:\-drive, our projects folders would be filled with too many subfolders, making it difficult to navigate. The folders contain OpenPCS projects (PLC) and related files (Word, Excel, PDF documents); a common project folder is 50 MB. Is there any easy to use, low-budget sync software with scripting, so that we could e.g. only sync folders that exist locally?" (Read more details, below, of what Koookiemonster is looking for.)
"Many programs do support selective sync, but choosing what to sync is awkward; projects and who works on them change daily. It is important that subscribing to a project is as easy as copying it from Z:\ to C:\projects\. The Z:\-folder with all of our current and past projects is located on a desktop PC running Ubuntu Linux. It can share files e.g. via Samba or FTP. All PCs are on the same (W)LAN. Off-site backups of Z:\ are taken care of via rsync. The company has three programmers, who usually handle their own projects alone, but very often others need to add files to projects. Bigger projects need more programmers. Currently we use FreeFileSync with a custom piece of Javascript to make batch files that synchronize e.g. folders C:\projects\123_ProjectName\ and Z:\123_ProjectName\ if the local folder exists. However, that solution lacks versioning, real-time sync and deletion support. It only syncs when we press a button, and then older files are overwritten by newer files (two way sync; older files go to a "sync-deletions"-folder).
PS. Bonus points for solutions that allow renaming project folders without renaming them on all laptops."
PS. Bonus points for solutions that allow renaming project folders without renaming them on all laptops."
I don't know if this will do everything you need, but I have been using it at home to backup three machines to my NAS. Seems to work quite well.
you are welcome
https://owncloud.org/
Keep the masters in a private cloud and sync to it from your PCs. Git and other multi-user SVN is an idea, too. Also, SharePoint is excellent (but lots of overhead).
[RIAA] says its concern is artists. That's true, in just the sense that a cattle rancher is concerned about its cattle.
This sounds like the ramblings of someone who has never heard of revision control.
USE VERSION CONTROL!!!!
Git
Mercurial
Perforce
Subversion
Vesta
CVS
ClearCase
VSS
StarTeam
The choices are legion. What you are doing is not a choice.
Pick a version control system and your life will be much easier (after the learning curve).
Sounds exactly like what an RCS like Subversion is good for.
Each user pulls down the directories relevant to him/her from the overall repository, updates at will from the central source, and pushes up changes at will with a couple of mouse clicks.
TortoiseSVN will even give you handy little icons on your local folders in Explorer to tell you if what you have in your local directory isn't synced with the central server, and it's two clicks to make that happen. I actually think you don't want to "force synchronization" on an ongoing basis, seems like a great way to overwrite a lot of your developers' (and others') ongoing work.
~ Whence do you come, slayer of men, or where are you going, conqueror of space?
We used to use ViceVersa Pro to sync our team but eventually moved over to Plastic SCM which has been friggin' awesome. It not only supports code, but also art assets. Plus it has the best support for branching. One team can be working on a branch specific to one project, while another works on a second branch while the main trunk stays clean and build-able. You can even have developers run their own local repository on their desktop/laptop and have them replicate/merge either on a schedule or when they connect to the LAN (if they work offsite alot).
You only bring stuff back to the main trunk when you're ready to merge a branch back in. You can even merge branches separate from the trunk. We check everything into it, code, art, and our Doxygen output. It's been a time save on orders of magnitude.
Not trying to be a sales pitch, but you should check it out.
Syncing files like this is a mess. Perhaps you should look beyond share drives. You are trying to solve the technical problem, but if you step back you might see a business problem. Consider 3 alternative approaches:
1) Keep the files on the share drive and do not mirror them locally.
2) Use a source control system (Ex: GIT, TFS, Subversion)
3) Use a groupware / content management system / document management system. ( Ex: Sharepoint, Confluence, QDMS, Lotus Notes, Microsoft Exchange, Drupal, SAP, Groupwise)
Knowing the right terms helps find the software you need. Here are some links to Wikipedia which has the right terms, and some lists of software:
http://en.wikipedia.org/wiki/Content_Management_Systems
http://en.wikipedia.org/wiki/Document_management
http://en.wikipedia.org/wiki/List_of_collaborative_software#Comparison_of_notable_software
Robocopy ( http://technet.microsoft.com/en-us/library/cc733145.aspx ) is included in all desktop versions of Windows (so, not RT or Phone). Extensive copying/moving/mirroring options, CLI-only. Great for integrating into scheduled scripts.
I'd still agree with other poster here, and recommend git over Robocopy to the OP. However, Windows does have a robust tool for syncing files between multiple computers built in.
In fact, Robocopy has been available since Windows NT 4.0.
It's sad to see an entire team of supposedly "professional" developers which have never heard of version control.
You can't even blame it on the Windows environment -- MSVS supports hooks for several version control systems either natively or through plugins/addons.
This whole story just reeks of some manager saying "We can't afford to set that up -- it would take too much time" any time someone has suggested it.
Because I flat out refuse to believe the entire team doesn't know any better.
I do not fail; I succeed at finding out what does not work.
If you don't want to do Version Control as others have suggested then I recommend Super Flexible File Synchronizer. It is a great product with lots of options in regards to what does and does not get sync'd. It is inexpensive to boot. http://www.superflexible.com/ftp.htm
I suggest finding the person who says you can't use version control, and locking him in a room until he either changes his mind or ceases to be a problem. Then, use version control.
You said you have programmers working on these projects. They probably each have their own preferred way to do this, why not ask them? If they can't come to a consensus, you could have them write their own solution.
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
"I'm a contractor. I have a team of carpenters who are tasked with building a house. It seems this is going to require the driving of a large number of nails. My team of carpenters would like to know what sort of tool or mechanism would work best to drive these nails. Right now, we have one guy who holds the nail while another guy hits it with his thermos. This does eventually drive in the nail, but 90% of the time the nail bends, and it's denting our thermoses. I wonder if there exists some genius, super-carpenter bad-ass out there who might be able to suggest a better way."
I second git. git scales badly with large files. If this is a problem, you could have a look at git-annex http://git-annex.branchable.com/ The concept needs some time to grasp, but it's really powerfull.
Git is absolutely not a good first version control system for people who are clueless about version control. (Such as, evidently, your developers).
Git requires prior experience with at least two simpler version control systems. In git, you often run into scenarios that require you to understand its complicated repository representation so that you can choose the best steps to unravel them, based on understanding the ramifications of each approach.
The implementation of git is not hidden from the user behind a robust set of "no brainer" use cases.
The decentralized model alone will confuse the heck out of workers with no prior version control experience.
Use a system that has a centralized server from which working copies are checked out, like Subversion.
You might want to checkout git-annex: http://git-annex.branchable.com/
It handles the idea of larger repositories with disconnected parts. You get git versioning of files and the ability to replicate portions of the data at will.
I agree that a VCS is the best choice, as suggested above. If, for some reason, you don't want to use that (eg: too many binary files grow you repo too much), unison is a great choice. It uses rsync to sync files, and keeps track of which files where modified on which side.