Slashdot Mirror


Ask Slashdot: User-Friendly, Version-Preserving File Sharing For Linux?

petherfile writes: I've been a professional with Microsoft stuff for more than 10 years and I'm a bit sick of it to be honest. The one that's got me stuck is really not where I expected it to be. You can use a combination of DFS and VSS to create a file share where users can put whatever files they are working on that is both redundant and has "previous versions" of files they can recover. That is, users have a highly available network location where they can "go back" to how their file was an hour ago. How do you do that with Linux?

This is a highly desirable situation for users. I know there are nice document management things out there that make sharepoint look silly, but I just want a simple file share, not a document management utility. I've found versioning file systems for Linux that do what Microsoft does with VSS so much better (for having previous version of files available.) I've found distributed file systems for Linux that make DFS look like a bad joke. Unfortunately, they seem to be mutually exclusive. Is there something simple I have missed?

212 comments

  1. vms port by Anonymous Coward · · Score: 0, Offtopic

    Wasn't Windows NT based upon VMS...

    1. Re: vms port by Anonymous Coward · · Score: 0

      Yes, I'm the same way that Baked Stuffed Lobster is based on Steak off they were both made by David Cutler

  2. FreeNAS by Anonymous Coward · · Score: 5, Informative

    FreeNAS will do all of that shiny stuff. And snapshots, too.

    1. Re:FreeNAS by Anonymous Coward · · Score: 2, Insightful

      Or the fork
      http://www.nas4free.org/

      ZFS for snapshots

    2. Re:FreeNAS by Tailhook · · Score: 4, Informative

      Yes, FreeNAS will get you there. Since versioning is a key requirement you will want to use ZFS. The thing you need for that is a plenty of RAM. It's not just a performance concern. ZFS can be unstable if not fed enough RAM.

      So budget for something with a lot of installed RAM on day one, and some room to grow as you add more storage.

      Yes, FreeNAS isn't Linux. The simple fact is that Linux has so far failed to achieve parity with other systems, both contemporary and historical, that provide advanced file system features. BTRFS might get there one day. ZFS is persona non grata. LVM can serve some of your expectations, but not all.

      So look beyond Linux. In addition to FreeNAS there is proprietary stuff; they still make NetApps and they still work as good as ever. Dell has EqualLogic boxes that will snapshot volumes all day long. If you have the dosh there are all sort of solutions. If you're dosh-challenged then look to FreeNAS.

      --
      Maw! Fire up the karma burner!
    3. Re:FreeNAS by Rich0 · · Score: 1

      Can ZFS actually do versioning on every file close? I know it can do snapshots, but of course btrfs can do that as well. I'd think that the goal of a versioning filesystem would be that versions are captured anytime a file is written, not just when the admin hits the snapshot button, or once an hour, or whatever.

      As far as I've seen the COW filesystems only do snapshots when they're asked to, and I'm not sure they're designed to scale to the point where you have billions of snapshots for millions of files.

    4. Re:FreeNAS by Anonymous Coward · · Score: 1

      You can set ZFS to take snapshots as often as you like, I think the Life Preserver utility will do it every 5 minutes, but you can use other tools to fine grain it further.

      I've heard from some admins that they've set up tens of thousands of snapshots on a single ZFS volume. It gets to be a pain to manage, but you can do it. Chances are, if you're using ZFS for versioning, you're going to automatically clean up snapshots, rotate them.

      So you might have an hourly snapshot, that gets cleaned up after 24 hours. You might have separate daily snapshots that are kept for a week. Weeklies that are kept a month, etc. What you end up with is quite flexible in terms of retrieving old copies without ever having more than a few dozen snapshots.

    5. Re:FreeNAS by MobyDisk · · Score: 2

      Can ZFS actually do versioning on every file close?

      The versioning filesystem that Windows Server provides does not version at every file close. It does it via snapshots. So that shouldn't be part of the submitter's requirements.

    6. Re: FreeNAS by ilguido · · Score: 1

      If that was the case he'd still be on windows. He wants something better, that's both distributed and has version control.

    7. Re:FreeNAS by Anonymous Coward · · Score: 0

      You do know that the default RHEL or CentOS installation is XFS?

    8. Re:FreeNAS by Quick+Reply · · Score: 2

      Not just a lot of RAM, it MUST be ECC RAM for ZFS. Without ECC, even a single flipped bit can cause ZFS to corrupt the entire file system.

    9. Re:FreeNAS by Anonymous Coward · · Score: 0

      FreeNAS run on FreeBSD
      EqualLogics run on FreeBSD
      NetApps run on FreeBSD

    10. Re: FreeNAS by Anonymous Coward · · Score: 0

      You just completely ignored the trigger requirement and just suggested the timer approach after they already stated why they didn't want that. They want event driven snapshots, not polled snapshots.

    11. Re:FreeNAS by Rutulian · · Score: 1
    12. Re:FreeNAS by Rutulian · · Score: 1, Informative

      Nonsense. ECC RAM may help avoid certain kinds of on-disk errors, but it's a heavily debated topic. Your statment,

      even a single flipped bit can cause ZFS to corrupt the entire file system

      is completely unsubstantiated BS.

    13. Re:FreeNAS by Anonymous Coward · · Score: 0

      But Linux has dozens of file systems. Surely one of them has this feature?

    14. Re:FreeNAS by Rich0 · · Score: 1

      Can ZFS actually do versioning on every file close?

      The versioning filesystem that Windows Server provides does not version at every file close. It does it via snapshots. So that shouldn't be part of the submitter's requirements.

      He never said he was happy with Windows Server's versioning.

      He did mention sharepoint, which does retain a version on every file save.

      I'm well aware that zfs and btrfs can be told to snapshot the entire filesystem as often as you want to fire off a cron job.

    15. Re:FreeNAS by Anonymous Coward · · Score: 0

      +1 to that. That's why I got rid of FreeNAS. It's memory hungry, and that means ECC memory hungry. 16GB wasn't enough for a home setup with some plugins and I wasn't gonna buy a beefier server with 32GB. I ended up getting rid of the server instead and installing Win 2008 R2 with Plex Server and the like (plus AD, file shares, etc). It works a lot better, and on a cheap, low power i5 (less heat, less noise, and lower electricity bills) and 8GB of vanilla RAM. Or I could have kept the server and have run that inside ESXi, with lots of resources to spare still...

      I really wanted a system that was free (as in beer) but I didn't find a suitable alternative.

    16. Re: FreeNAS by horacerumpole · · Score: 1

      You can simulate this using inotify.

    17. Re:FreeNAS by AthanasiusKircher · · Score: 2

      Nonsense. ECC RAM may help avoid certain kinds of on-disk errors, but it's a heavily debated topic.

      With ZFS it is NOT a debate -- ZFS is very RAM-intensive and uses RAM in more critical ways than many other filesystems. In particular, for reasons having to do with how ZFS works, small RAM errors can (and have) made a ZFS filesystem unmountable. And given that there are NO recover tools for ZFS, that means your data is gone.

      You can debate how often such things happen, but they can and have. In most other filesystems, bad RAM is mostly a concern about corruption of some files on disk, but with ZFS it can lead to more catastrophic failure. Heck... don't believe me? Read a blog by a guy who argues against using ECC if you know the risk thoroughly... but he still is clear that there's a risk of complete filesystem loss. (He just thinks those actual stats on how often it happens are indeterminate and that money is better spent on actual backup systems.)

    18. Re:FreeNAS by inasity_rules · · Score: 1

      I might be missing something here, but I run a small BSD ZFS file server with samba and the little PC it runs on only has 2Gb or RAM. I am not doing anything more complex than a simple mirror (I have backups, the mirror is for availability), the equivalent of RAID 1+0, and sure caching is off, but performance is fine for the 6 people that use it(some even running their virtual machines off it, though I try to discourage that). What am I missing?

      --
      I have determined that my sig is indeterminate.
    19. Re:FreeNAS by fnj · · Score: 1

      Not just a lot of RAM, it MUST be ECC RAM for ZFS. Without ECC, even a single flipped bit can cause ZFS to corrupt the entire file system.

      it MUST be ECC RAM for ZFS

      Utter bullshit. Do not spread silly but destructive lies. If you are anal, non-ECC RAM can corrupt ANY filesystem. Nay, not just any filesystem, but any CONCEIVABLE filesystem. ZFS does not have any magic dependency on ECC that you are magically free from if you do not use ZFS.

    20. Re:FreeNAS by fnj · · Score: 1

      Sorry, Rutulian is entirely correct. You are full of bull, and that blog is unsubstantiated and clueless. The FreeNAS community is full of people who think they know more than they actually do (there are some very bright people there too, but it's up to you to figure out which ones).

    21. Re: FreeNAS by Rich0 · · Score: 1

      I suppose, though that still leaves you with the challenge of finding all the versions of a single file. I'm not as familiar with the zfs internals, but I don't believe there are any data structures in btrfs that make it easy to traverse all the versions of a single file.

    22. Re: FreeNAS by Anonymous Coward · · Score: 0

      Yes, actually it does, because it relies on ram for block hash checking and you can get cascading failures without ECC. ZFS requires it because of how it maintains file integrity.

    23. Re:FreeNAS by Rutulian · · Score: 1

      I'll go with one of the co-architects of ZFS, Matthew Ahrens,
      http://arstechnica.com/civis/v...

      There's nothing special about ZFS that requires/encourages the use of ECC RAM more so than any other filesystem. If you use UFS, EXT, NTFS, btrfs, etc without ECC RAM, you are just as much at risk as if you used ZFS without ECC RAM. Actually, ZFS can mitigate this risk to some degree if you enable the unsupported ZFS_DEBUG_MODIFY flag (zfs_flags=0x10). This will checksum the data while at rest in memory, and verify it before writing to disk, thus reducing the window of vulnerability from a memory error.

      I would simply say: if you love your data, use ECC RAM. Additionally, use a filesystem that checksums your data, such as ZFS.

      In other words, there is a non-zero chance that you will get silent data corruptions on disk if you don't use ECC RAM. It is the same risk with ZFS as with any other filesystem. And yet, personal computers have been running without ECC RAM for decades and it hasn't been a travesty. So yeah, if you are running in the type of situation where you absolutely must ensure the highest level of data integrity, then you must use ECC RAM. If you are running your own personal home media NAS, it is probably not an unmitigable risk to buy cheaper hardware. The storage gurus will argue, "Why use ZFS if you don't care about it's data integrity features?" My response is that ZFS has a ton of other very useful features that make it a great filesystem.

      BTW, bad vs. good RAM is not the same thing as non-ECC vs. ECC RAM. While ECC RAM will protect you from bit flips, a bad stick of RAM is still a bad stick with or without the extra parity bit. Aaron Toponce has a good (non-sensational) discussion on the topic,
      https://pthree.org/2013/12/10/...

    24. Re:FreeNAS by hsu · · Score: 1

      Single bit flip can definitely cause *any* kind of corruption, it just depends what bit it was. Obviously to cause major damage you need to be somewhat unlucky. I usually have ECC ram on all computers, but on lesser stuff I have had some non-ECC computers. On those, I have seen all modified cache blocks to be written on disk as zeroes, continous random blocks written to wrong places on disk, and number of other incidents during last 20 years of having memory-error linked filesystem corruption on non-ECC computers. Not using ECC has cost me a lot more money in debugging and rescuing messed up servers and workstations than the savings on cheaper non-ECC memory, so I always find hardware with ECC. It does not really cost that much extra. For budget, HP microservers have ECC and 4 disk slots, and they are something like 200€ per unit. Supermicro has neat Atom server motherboards with ECC. Workstation motherboards are a bit more difficult as most consumer stuff, in particular Intel stuff does not have ECC or BIOS ECC stuff has been left out. AMD may have better price/performance ratio in some cases, when ECC is requirement.

      Single bit flip can corrupt ZFS, just like any other filesystem. It does not help to have checksumming for blocks, as the corruption can be in metadata, memory pointers, memory data structures, and happen, say, in driver which writes blocks to wrong place, ignores checksums or generates wrong checksums, bit flipped before calculating checksum. The system can write too much or too little data, leading part of data not written at all, or valid data written over with whatever was in the memory. The list of possibilities what can happen on single bit flip is endless. Written data may be correct but it just got written over to some metadata in some wrong place. Raid features will not help here either, as the same corruption may go to all devices. After this, you have corrupt metadata, and likely, if this is not detected, you will continue to get more corruption as long as the system runs and does not stumble on the corruption, which may happen far too late to be able to rescue anything. ZFS or any other filesystem does not and really cannot protect against that. It is designed to detect disks returning wrong data to you, not memory errors.

      Not using ECC is way more expensive than using ECC, if you put any value to your working hours, and properly value risks of your own or customer's data being corrupt. ZFS does NOT protect you from most memory errors. It does reasonable job protecting you from disk and disk-memory transfer errors. And it does not have fsck, so if it gets confused, sorry, restore backups. Restoring a large ZFS filesystem takes time, by the way.

    25. Re:FreeNAS by Rutulian · · Score: 1

      I don't disagree with anything you have said. We use ECC RAM in our servers. My contention was only with the statement,

      Not just a lot of RAM, it MUST be ECC RAM for ZFS

      implying that ZFS is somehow a special case from other filesystems. It's not.

    26. Re: FreeNAS by Anonymous Coward · · Score: 0

      I'm not familiar with zfs either, but I suppose this would be a basic function of zfs interfaces, wouldn't it?

    27. Re:FreeNAS by fang0654 · · Score: 1

      Umm, pretty sure 24GB RAM cost way less than Win 2008 R2. And also pretty sure FreeNAS doesn't require a high power i7. I don't have any recent experience with FreeNAS though. I can't fathom running a Windows Server at home (other then in a lab environment), but I know Linux, and can configure a server to do what I need pretty quickly and easily. If you are better in Windows than more power to you.

    28. Re:FreeNAS by Wolfrider · · Score: 1

      > ZFS can be unstable if not fed enough RAM.

      --I have seen ZFS (FreeBSD and Linux) be "stable" with ~2GB of RAM, as long as you are using a 64-bit OS. In my experience, these days ZFS only needs lots of RAM if you are doing de-duplication - although this can be gotten around to a certain extent if you use an SSD drive for L2ARC; it will just be slower. Maxing out your RAM is recommended if you want max speed and you can afford it, but there are other ways. As long as you're not doing de-dup and not expecting miracles; my ZFS backup/fileserver only has 6GB of RAM and is doing fine running Ubuntu 14.04-64-LTS.

      --
      .
      == WolfriderV6 == I'm willing to admit that *I just might* be wrong... Are you??
    29. Re:FreeNAS by petherfile · · Score: 1

      Highly available? How do you do that? I don't want remote backups, I want a highly available system that can just start using a second node transparently when one goes down. DFS/VSS does that for you.

    30. Re: FreeNAS by Rich0 · · Score: 1

      I'm not familiar with zfs either, but I suppose this would be a basic function of zfs interfaces, wouldn't it?

      Only if it is implemented as such. It probably isn't.

      Suppose you have a file which was modified once (ie there are two versions). The overall filesystem has files which have had 3 billion modifications. You have 3 billion trees and the leaf node for that file in each tree points to one of two versions.

      The smart way to search the tree is to compare all the roots and eliminate any which aren't different versions (there won't be any at this level, since new roots are only created for new snapshots). Then you descend one level in each and eliminate all which aren't different versions (which will eliminate 99% of the records at this level, since if you snapshot on a single file change most nodes will be shared across two trees except the one containing the one file that changed). Then you keep going down eliminating duplicates in this way. In the end you'll have a bunch of linked lists from root to leaf showing the one file that changed in each new root (a tree with only one node per level is a linked list). Then you search the leaf nodes for the file of interest and generate a linear history for that one file. If you are targetting a particular file then you can stop your search early on most of those trees anytime you discard the parent of the desired leaf (if you're looking for changes in /etc/passwd and in this tree only an unknown file in /usr changed you can stop searching).

      That is still a lot of work, because there was no linkage between file versions in the data structures. A filesystem optimized for file versioning would store a link from each file to the previous version so that the history for a single file could be traversed with only one seek per version.

      However, doing this from userspace is going to be even less efficient if the filesystem doesn't expose its internals. In userspace you have no visibility into which directories under a snapshot are a shared record in the filesystem. To trace the history of a single file requires descending to that file in every single tree, and doing a full comparison, which is far more operations than in the optimal algorithm. To trace the history of the entire tree requires comparing every file in every snapshot, which is an enormous number of operations even in RAM, let alone on disk.

      If you've ever tried to do a git log on an individual file in a very large git repository you might have noticed this problem, and I believe git does things in the optimal way. (Git repositories are very similar to COW filesystems.) If you stuck your entire hard drive into a git repository and did a commit on every change, you'd quickly run into this problem.

      To do this well really requires designing the feature into the filesystem. Doing it in a COW filesystem is especially challenging since if you want to remove a snapshot you need to potentially clean up broken links at the leaf level if you're actually linking across snapshots so that you can easily traverse file histories.

    31. Re: FreeNAS by MobyDisk · · Score: 1

      If that was the case he'd still be on windows.

      If what was the case?

      He wants something better, that's both distributed and has version control.

      The submission does not ask for those things.

    32. Re:FreeNAS by MobyDisk · · Score: 1

      He never said he was happy with Windows Server's versioning.

      From the submission.

      That is, users have a highly available network location where they can "go back" to how their file was an hour ago. How do you do that with Linux? This is a highly desirable situation for users.

      I took "is highly desirable" to indicate he was happy with it.

    33. Re:FreeNAS by hoggoth · · Score: 1

      > zfsonlinux

      Using it here in production. Very happy with it. Windows permissions are a hassle though, but that's a SAMBA issue. (zfsonlinux doesn't have built in CIFS export)

      --
      - For the complete works of Shakespeare: cat /dev/random (may take some time)
    34. Re:FreeNAS by Rutulian · · Score: 1

      Same here.

      zfsonlinux doesn't have built in CIFS export

      It's not built in, but it is integrated. Just use
      zfs set sharesmb=on pool/srv

      If you are having perms issues, make sure you have acl support enabled in your kernel and userland, and then use the aclinherit property on your zfs pool. Samba should handle the translation between NT and posix ACLs seamlessly, but you may need to use Samba4 for the best results.

    35. Re:FreeNAS by hoggoth · · Score: 1

      Thanks. I had given up and went to a simple permissions model with user/group forced for all files under certain directory trees.

      --
      - For the complete works of Shakespeare: cat /dev/random (may take some time)
    36. Re:FreeNAS by Rich0 · · Score: 1

      I stand corrected.

      However, if you do want file versioning on every save, I'm not convinced that zfs/btrfs are great solutions.

    37. Re:FreeNAS by MobyDisk · · Score: 1

      agreed.

  3. LOL by Anonymous Coward · · Score: 0, Troll

    Like the submitter, can someone do my job as well?

  4. its true by Anonymous Coward · · Score: 0

    Flash drives.

  5. ZFS by blowfly7012 · · Score: 3, Informative

    Look at ZFS. Supports snapshots, SMB and NFS. And you can show the snapshots as a read-only directory to users.

    1. Re:ZFS by Rich0 · · Score: 1

      Can you make it snapshot anytime a file is modified? Also, can you easily find all the snapshots for a single file? Or do you just have 3 million subdirectories where a given file might or might not change between any random pair of them?

    2. Re:ZFS by willy_me · · Score: 1

      If you want per-application snapshots then you want the application to be in charge of the snapshots - not the file system. The file system does not know when an application is finished making changes to a file. Possibly many files must be changed - the file system does not know so it can not make any assumptions. Applications should be in charge of their own document snapshots using some form of version control. If one wanted they should script it so that a ZFS snapshot was generated - but you are better of using git.

      With regards to ZFS, the snapshots are generally done at whatever frequency is defined by the administrator. 5min, 30min, 1day - whatever they decide. The snapshots are accessed from the root ".zfs/snapshots/named_snapshot" directory. There is no piecing together of files - the full file-system, as it was at the point in time it was captured, is available in the directory. The snapshots are immutable - the contents will never change so long as the snapshot exists.

    3. Re:ZFS by bill_mcgonigle · · Score: 1

      Can you make it snapshot anytime a file is modified? Also, can you easily find all the snapshots for a single file?

      It sounds like you're looking for a versioned filesystem, not a snapshotting filesystem. The latter is a point-in-time of the whole filesystem tree, the former is file-centric. Windows derives from VMS, which did file versioning by default, so that's not too surprising.

      Tux3 or copyfs on Linux might be ways to do it. A quick google said that there's a way to make Alfresco present an SMB share with versioning - I hadn't considered networking a document management system, but OK, why not?

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    4. Re: ZFS by Anonymous Coward · · Score: 0

      DOS loosely derived from VMS. NTFSis a wholly new and unrelated beast.

    5. Re:ZFS by Rutulian · · Score: 2

      Also, can you easily find all the snapshots for a single file?

      If you export the filesystem via Samba, you can enable the VSS compatibility feature, which allows Windows users to access the "Previous Versions" tab. There is no equivalent for other Mac or Linux clients, or other network filesystems (NFS, etc) that I know of. It would be a nice feature to have.

    6. Re: ZFS by drinkypoo · · Score: 1

      DOS loosely derived from VMS.

      Well no. DOS loosely derived from CP/M and then later absorbed concepts from Unix. NT was created by some of the architects of VMS, and even has some of the same features, maybe even architecturally.

      NTFSis a wholly new and unrelated beast.

      Yes. That's true.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    7. Re:ZFS by Anonymous Coward · · Score: 0

      "Can you make it snapshot any time file is modified?"

      Yes, or at least nearly. See http://www.edplese.com/samba-with-zfs.html on using preexec in your samba config which, when any connection is made to the samba share, will create a snapshot of the state before they change anything. I'm sure more could be done with this.

    8. Re:ZFS by Rich0 · · Score: 1

      Well, the whole idea would be to have simple snapshots of every file version without having to re-implement every application I use.

      And it sounds like the answer to my second question is no. btrfs works in the same way. The snapshot is at the filesystem/subvolume level, and if you want to find all the versions of a particular file you basically have to find the file in every snapshot that exists and diff them all.

      I love btrfs. I just don't think that it solves this particular problem, and neither does any other linux filesystem. The fact that nobody has implemented this on linux doesn't make it any less useful.

    9. Re:ZFS by Anonymous Coward · · Score: 0

      How do you define a "file version"? When you close the file descriptor? When you flush buffers? Every byte that you write to a file? When 'version' is defined by application semantics the application has to control it. Filesystem snapshotting simply sees a blob of bytes in a directory tree and doesn't know when the application is done updating a 'version' so it is usually time based (like once daily).

    10. Re:ZFS by Rich0 · · Score: 1

      How do you define a "file version"?

      Agree that this is a challenge. It would seem to me that the simplest solution would be to create a version anytime you close the descriptor. I realize that some activities that keep files open for long times would not create versions, but for most mainstream cases it would probably work. It would certainly work better than just taking random snapshots at random times when a file might be half-modified.

      A solution does not need to be perfect to be useful.

    11. Re: ZFS by Anonymous Coward · · Score: 0

      >> DOS loosely derived from VMS.

      > Well no.

      Yeah, that's BS. Must be someone new...

      > DOS loosely derived from CP/M

      Loosely? Hmm... right. Let's talk with the QDOS guy...

      > and then later absorbed concepts from Unix.

      CP/M was related to Unix from the beginning (probably via some Digital RSX OS)... "pip", "stat", "more", drive ids followed by ":", a name,"." and a extension. The only part missing was the ";" and the version number.

      Hmm, ok the drive ids and colons were just in the PDP...

      Curiously, the opposite also happened... for instance, there's a "dir" command in Linux...

      And part of the CP/M & DOS evolution was to progressively implement Unix features (like e.g. folders...).

      To grasp how much this was not coincidental, there was once an OS called Apple DOS... it was 100% different from Unix. One would type:

      CATALOG,D2 ... to make the second drive the default one (like typing "B:" in DOS).

    12. Re:ZFS by petherfile · · Score: 1

      ZFS looks great for snapshots... does it do anything in a distributed manner? That is, can it's storage pools be on different physical systems? how can you do ZFS without a single point of failure? is it possible?

  6. TortoiseSVN (ie. Subversion) by Anonymous Coward · · Score: 0

    If you're just looking for a flexible CM system. It's multisite capable, and I think licensing is free.

    1. Re: TortoiseSVN (ie. Subversion) by Anonymous Coward · · Score: 0

      Incidentally, there's a windows compatible version as well, if your contingent of users is multiplatform.

    2. Re: TortoiseSVN (ie. Subversion) by ClickOnThis · · Score: 1

      TortoiseSVN is a Windows-native client for SVN. You still need to connect it to a Subversion service running somewhere.

      --
      If it weren't for deadlines, nothing would be late.
    3. Re: TortoiseSVN (ie. Subversion) by Anonymous Coward · · Score: 0

      Users will always find a way to break something, host the subversion on a Linux box, access it via Tortoise and try to add files with the same name but in a different case. It will allow you to but it creates some odd behaviour. All becomes clear when you go back to Linux and see.

    4. Re: TortoiseSVN (ie. Subversion) by quintus_horatius · · Score: 1

      While it's not recommend, you most certainly can run tortoisesvn in a stand-alone setup.

    5. Re: TortoiseSVN (ie. Subversion) by ClickOnThis · · Score: 1

      Correct. However, that doesn't fulfill the file-sharing part of the OP's requirements.

      I have used TortoiseSVN when I needed to work in Windows. I come to praise it, not to bury it. The integration with Windows Explorer is especially good. If you simply must use Windows, then TortoiseSVN is worth a look.

      --
      If it weren't for deadlines, nothing would be late.
    6. Re: TortoiseSVN (ie. Subversion) by Anonymous Coward · · Score: 0

      You still need to connect it to a Subversion service running somewhere.

      Bollocks, you can designate a folder as a local repository. I do it all the time when migrating projects between repositories.

      That said, SVN fails the "user friendly" requirement.

  7. VMS by FranTaylor · · Score: 4, Interesting

    use VMS, it's built in

    TOPS-20 had it too

    yearning already for the lost technology of the 1970s

    1. Re:VMS by NoNonAlphaCharsHere · · Score: 1

      DIR :== PURGE/ERASE/NOCONFIRM/NOLOG




      I knew the goddam lameness filter was going to interfere. I'm not shouting, it's the Vomit Making System!!!

    2. Re:VMS by VAXcat · · Score: 2

      And RSX

      --
      There is no God, and Dirac is his prophet.
    3. Re:VMS by RogL · · Score: 1

      And Wicat systems, also from back-in-the-day. I used them in '80s.

    4. Re:VMS by kimvette · · Score: 1

      I loved that feature of VMS.

      Fat-fingered a config file? No problem!

      copy file.conf,6 file.conf

      FIXED!

      Whereas now it is dependent upon zealously careful sysadmin process:

      cp file.conf file.conf-yyyymmdd
      vim file.conf

      oops, fat-fingered it, or used a deprecated setting that broke the service, or vim decided to go nuts and insert dkghkjh3kh34534kj5h43kj54k3j when you saved.......

      cp file.conf-yyyymmdd file.conf

      And, if you didn't make that backup file? Hope you have a proper backup regimen!

      --
      The Christian Right is Neither (Christian nor right). See: Matthew 23, Matthew 25, Ezekiel 16:48-50
    5. Re:VMS by Anonymous Coward · · Score: 0

      Ahhh, VMS. The file system really was grand! Unfortunately I don't know anything about TOPS-20, except that perhaps it had an auto-versioning filesystem?

    6. Re:VMS by Anonymous Coward · · Score: 0

      or vim decided to go nuts and insert dkghkjh3kh34534kj5h43kj54k3j when you saved

      I can't even begin to guess how this kind of crap could happen. Anyway. Vim user and worried about saving a config file, closing, and then finding out you messed up something?
      set undofile
      set undodir=$HOME/.vim

    7. Re:VMS by Anonymous Coward · · Score: 0

      And RSX

      Ah, FILES-11 brings back fond memories; it made a new version on every file close, incrementing the version number. This was my first criticism (back in the early 80s) of the DOS file system, which does not support file versions at all. I found that quite mind boggling.

    8. Re:VMS by packrat0x · · Score: 1

      I suppose we could manually place ,1 ,2 etc. behind each file. I wonder if you could write a script wrapper around your favorite editors to do this. I suppose vim and emacs might even have modules for this as well.

      --
      227-3517
  8. Next building on the left. by Anonymous Coward · · Score: 0

    This is a stackoverflow question. http://stackoverflow.com/

    1. Re:Next building on the left. by Anonymous Coward · · Score: 2, Insightful

      Closed as off topic. Try serverfault.com.
      Closed as off topic. Try superuser.com.
      Closed as off topic. Try unix.stackexchange.com.
      Closed as off topic. Try....

    2. Re:Next building on the left. by Anonymous Coward · · Score: 0

      Yep, it's literally a question that belongs NOWHERE.

    3. Re:Next building on the left. by tepples · · Score: 1

      Would Software Recs be closer?

    4. Re:Next building on the left. by Anonymous Coward · · Score: 0

      It belongs at the expertsexchange
      Punctuate as you see fit

    5. Re:Next building on the left. by Anonymous Coward · · Score: 0

      It belongs at the expertsexchange Punctuate as you see fit

      I just realized that site reads like a site Bruce Jenner might got in a Google result. Tim S.

  9. owncloud by Anonymous Coward · · Score: 1

    https://owncloud.org/

    1. Re:OwnCloud by Junta · · Score: 2

      Depending on your usage, I'd recommend http://seafile.com/en/download...

      We were using owncloud, but at least at last check a non-admin user needed a lot of things done by an admin on their behalf, and seafile let's people make their own groups and such.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    2. Re:OwnCloud by Rutulian · · Score: 1

      Owncloud is a poor substitute for a fileserver because everything has to be owned by the webserver user at the the filesystem level. All of the access controls and versioning is handled by the owncloud webapp. So if you need to operate outside of the owncloud environment you are screwed, like for example using owncloud's dropbox-like client for easy syncing and at the same time exporting the filesystem via Samba for people to map network drives.

    3. Re: OwnCloud by Anonymous Coward · · Score: 0

      Wrong, toucan access and mount owncloud shares as WebDAV

  10. OwnCloud by jd142 · · Score: 5, Informative

    Take a look at the features list at https://owncloud.org/features/. It seems to have what you want. I played with it a couple of years ago and it was easy to set up then. Unfortunately I never had the opportunity to try it in production.

  11. Sharepoint substitute? by bluefoxlucid · · Score: 2

    What is this of which you speak? Can someone expand on these thing?

    1. Re:Sharepoint substitute? by MobyDisk · · Score: 1

      It's the Microsoft Volume Shadow Service. It's not the same thing as Sharepoint. FYI: A Sharepoint admin recently told me "If you are just using Sharepoint as a way to share files, then you are using it's weakest most awful feature."

    2. Re:Sharepoint substitute? by Anonymous Coward · · Score: 0

      Shitpoint. Fixed that for ya.

    3. Re:Sharepoint substitute? by Anonymous Coward · · Score: 0

      Oh Jeez, thanks, I was thinking he was using Visual SourceSafe... so, like, why not use git as a replacement then.

  12. WebDAV by Anonymous Coward · · Score: 4, Informative

    Search Google for WebDAV auto-versioning.

    I have set up (and used for many years) a WebDAV file share served by Apache (with an SVN backend). It can be used as an SVN repository (with checkin comments, etc.) or used as a simple remote file share that automatically creates revisions for the changes. I have used various WebDAV clients (built in to Linux, Mac, Windows) to access and modify the contents of the files.

    Hope that gives you another area to explore.

    1. Re:WebDAV by melstav · · Score: 2

      I agree with this AC.

      If using SVN directly doesn't fit your needs -- if you REALLY want the transparency of a shared filesystem (as opposed to explicitly saying "synchronize the contents of this directory with the image on the server" ) WebDAV builds that on top of SVN. And if you want access controls, Apache's mod_auth provides them. Encryption? mod_ssl.

    2. Re:WebDAV by MatthiasF · · Score: 1

      I literally wanted to set this up for myself using WebDAV, Apache and Subversion (SVN) to keep versions of my web programming but could not find a decent tutorial.

      Did you use a tutorial or is there a package that helps?

    3. Re:WebDAV by flink · · Score: 4, Informative

      Assuming you already have svn installed and copy of Apache httpd with mod_dav_svn and you are are running on some flavor of *NIX.

      Create an svn repository somewhere, eg.

      # svnadmin create /opt/svn-repo

      Create a password for your repo, replace username and password as appropriate

      # htpasswd /opt/svn-repo/conf/htpasswd USERNAME PASSWORD
      # chmod 640 /opt/svn-repo/conf/htpasswd

      Fix the permissions of the repo so that the user that httpd runs as can write to the repo database. Replace www with whatever the appropriate user is:

      # cd /opt/svn-repo
      # chgrp -R www .
      # chmod -R g+r .
      # chmod -R g+rwX db locks
      # find db locks -type d -exec chmod g+s '{}' ';'

      Open httpd.conf and add/uncomment the following lines in the LoadModule section:


      LoadModule dav_module modules/mod_dav.so
      LoadModule dav_svn_module modules/mod_dav_svn.so

      At the very bottom of your httpd, add a location for your repository:

      <Location /repo>
          DAV svn
          SVNPath /opt/svn-repo
          SVNAutoversioning on

          AuthType Basic
          AuthName "Subversion repository"
          AuthUserFile /opt/svn-repo/conf/htpasswd

          Require valid-user
      </Location>

      Restart apache and then test your config:

          # svn ls http://localhost/repo --username USERNAME --password PASSWORD --no-auth-cache
          #

      No errors means everything is working.

      See the manual for instructions on mounting the WebDAV share with various clients. Note that Windows is kind of problematic for this out of the box and you may need to use a third party file system driver such as NetDrive.

    4. Re: WebDAV by Anonymous Coward · · Score: 1

      That's quite a coincidence. I FIGURATIVELY wanted to set this up!

    5. Re:WebDAV by Anonymous Coward · · Score: 0

      Really, would you use SVN for a distributed service, instead of git?

  13. samba 4 and btrfs by europrobe · · Score: 1

    Samba 4 will integrate nicely with btrfs and do previous versions for you. To get redundancy, just put the btrfs volume on RAID, perhaps?

    --
    Score:-1, Wrong
    1. Re:samba 4 and btrfs by WuphonsReach · · Score: 1

      Specifically, Samba 4.2 with Snapper. It's probably still a scheduled snapshot, but it looks to be better then how we did things in 4.0 and 4.1.

      --
      Wolde you bothe eate your cake, and have your cake?
  14. samba by Anonymous Coward · · Score: 0

    You can try samba with a btrfs plugin

  15. do I have to spell it out? by slashdice · · Score: 0, Troll

    put the versioning file system on top of the distributed file system.

    Or, in a way even a dice employee will understand:

    You: I like sucking dicks. And I live having my dick sucked. But nobody will suck my dick and nobody will let me suck their dick.

    Me: Ok, why don't you suck your own dick?

    You: (run off to your bedroom, close the door, is not seen again for 3 days).

    --
    Copyright (c) 1990 - 2014 Dice. All rights reserved. Use of this comment is subject to certain Terms and Conditions.
    1. Re:do I have to spell it out? by unrtst · · Score: 1

      put the versioning file system on top of the distributed file system.

      I suspect you only got modded down because of the other comments you made, but I came here to say the above, so I'm just replying to you instead.
      You can also reverse that. Linux has great support for stacking block devices and file systems.

      The real question then becomes, what's the best combo? I don't think you'll find one answer for that because there are so many ways to do it.

      You should get your real requirements in place first, and be sure you don't include stuff that you don't actually need. For example, is client access via smb required, or is the requirement that they have access to a networked file system of some sort (ex. would webdav work), or is that not a requirement at all and they would be ok using a checkout/checkin style system or some other specific program to get/put data?

      Even without those requirements, here's some items I'd suggest looking at:
      * DRBD : Distributed Replicated Block Device. The docs aren't all that great, and it can be awkward to work with, but it's nice, low level, and just works for raw blocks, meaning you can stick whatever you want on it and easily have a HOT/COLD setup (hot HOT/HOT with version 8). It can work above or below LVM too.
      * GlusterFS : This does file based mirroring, replication, striping, load balancing, failover, etc. One nice thing is that it can be slapped on top of an existing filesystem. The downside (IMO) is that it's file based. That means it's garbage for replicating databases (just as an example). That has its benefits though, and may fit your use case nicely. It's pretty easy to use, but has a LOT of features (including built in NFS, CIFS, and smb servers).
      * git and the many git based things out there. There's a TON of stuff that falls into this category. This moves away from trying to make a filesystem do all the work, but it brings a LOT of features if you adopt one of these. The fact that every user has a full repo copy means you don't have to worry about the "server" and distribution much. YMMV and all that.
      * subversion "autoversioning" with WebDAV. Mount it as WebDAV and all saves generate new revisions. You could easily later this on DRBD or Gluster.
      * Dropbox et al. : most of these things have a way to share files with a group, keep local copies in sync, and provide versions to some extent. Use OwnCloud if you want to do it yourself.

    2. Re:do I have to spell it out? by Anonymous Coward · · Score: 0

      You can legally do this now, the U.S. Supreme Court says so.

    3. Re: do I have to spell it out? by Anonymous Coward · · Score: 0

      You don't need to be married to suck dick.

  16. sharepoint... by Junta · · Score: 2

    make sharepoint look silly

    Sharepoint needs absolutely zero help to look silly.

    Of MS world of products, sharepoint is perhaps the worst festering thing they got.

    --
    XML is like violence. If it doesn't solve the problem, use more.
    1. Re:sharepoint... by Anonymous Coward · · Score: 0

      WTF is Sharepoint? Nobody I asked could provide an unambiguous answer. ;)

    2. Re:sharepoint... by Anonymous Coward · · Score: 1

      Only because Bob didn't pan out... ;)

    3. Re:sharepoint... by Anonymous Coward · · Score: 0

      MS Bob was pretty good, too.

    4. Re:sharepoint... by thegarbz · · Score: 5, Funny

      You must not be using it right. Sharepoint can do EVERYTHING. It is a one stop shop for all your worlds problems. It has a feature list that make most OSes look lame in comparison. Just think of all the use cases:

      - You want document management with integration into popular MS products which breaks horribly whenever you use something non-standard? SHAREPOINT!
      - You want a metadata search system which fails to properly search metadata fields? SHAREPOINT!
      - You want to run a website with dynamic content that is so difficult to edit you'll yearn for using HTML and Notepad? SHAREPOINT!
      - Are your users being too productive? Want to slow people down a notch with slow load times so they don't embarrass you? SHAREPOINT!
      - How about an integrated user management system which allows you to search users by hitting a single key and waiting half an hour! SHAREPOINT!

      And on the days when you think you have hit rock bottom, your corporation is slowly falling apart after a SAP implementation has screwed the accounts system so badly that few invoices can be found, we have 3 words for you that you can integrate and ensure that the invoice you do find become unusable: SHARE FUCKING POINT!

      Sharepoint is a great OS, all it needs is a decent text editor. Oh wait, MS Word. ... SHAREPOINT!

    5. Re:sharepoint... by hackertourist · · Score: 1

      So, it's the spiritual successor to Lotus Notes, then?

    6. Re:sharepoint... by Anonymous Coward · · Score: 0

      Or emacs

    7. Re:sharepoint... by Junta · · Score: 1

      Except Lotus Notes is still around, but yes, it's like MS took a look at Lotus Notes and said 'now *this* is the way to do things'.

      --
      XML is like violence. If it doesn't solve the problem, use more.
  17. Sparkleshare by Anonymous Coward · · Score: 0

    Yuo can try Sparkleshare. This soft use git like repository to keep versions

  18. POSIX I/O is not really a good fit for versioning by iamacat · · Score: 1

    If someone updates a file in place, do you really want to create a new version for every write call? On the other hand, apps that update files atomically do so by renaming original and backup, which breaks tracking these as the same file.

    What you can do is make hourly snapshots and make them available as read only shared directories. Easy enough with simple hard links, and many filesystems support snapshots natively.

    Protocols like WebDav do support versioning, but it would work best with WebDav clients, not naive apps that think they are writing to a local disk.

    The best version control is actual version control such as git.

  19. Syncthing by Anonymous Coward · · Score: 0

    I haven't tried the versioning yet, but Syncthing (open-source file sync with nice web interface, cross-platform) supports it AFAIK.

    syncthing.net

  20. Sparkleshare by Anonymous Coward · · Score: 0

    I use Sparkleshare. Git is on back to keep viresions.

  21. What do you mean by versioning? by Anonymous Coward · · Score: 1

    A fundamental problem with your question is what you expect for versions. Filesystem interfaces are not transactional and applications and users do not provide clear indications of what constitutes a new "version" of a file. Is it every byte change, like a document in Google docs or change-tracking within an MS Office document? Is it whatever is found every night when a backup system makes a pass over the file tree? Is it something in between?

    People are mentioning things like BTRFS and ZFS snapshots but they do not solve this problem any more than a recurring backup tool. Some process needs to determine WHEN to take a snapshot, and from concurrency this can include partially modified files except where applications have followed a protocol such as creating a modified copy and then renaming it. The filesystem snapshots only change the cost model a bit for taking frequent snapshots, both in terms of the processing and IO time and in the resulting storage consumption to hold multiple snapshots.

    Tools like Dropbox apply a bunch of heuristics to attempt to identify points in time when a new file version exists, and to capture those versions. This is done with an agent running on the same machine as the applications which modify the files, so it can monitor things like file locks, open file descriptors, idiomatic file rename events, etc. A lot of this is impossible from a centralized file server because the SMB or NFS protocol hides a lot of the access details that would distinguish a "complete" file change from a partial change.

    1. Re:What do you mean by versioning? by FranTaylor · · Score: 1

      Filesystem interfaces are not transactional

      if that were true then you could not use a filesystem to safely store a database file

    2. Re:What do you mean by versioning? by Qzukk · · Score: 2

      you could not use a filesystem to safely store a database file

      You can store the database file there, just don't let the power go out mid operation or make a copy of an active database's file(s) and expect it to work.

      In other words, exactly like how it is now.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    3. Re:What do you mean by versioning? by angel'o'sphere · · Score: 1

      Perhaps you should read about:
      * transaction
      * filesystem
      * database
      just a little bit more.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:What do you mean by versioning? by MobyDisk · · Score: 1

      You can only use a file system snapshot to store a database file because databases are designed specifically to handle this. 3-phase commit logic, journals, transaction logs... The database builds transactional capabilities on top of the file system. And even those don't work if the drive "lies" and says it committed data when it didn't. That's why you should be careful running an enterprise file system on consumer-grade drive.

    5. Re:What do you mean by versioning? by Anonymous Coward · · Score: 0

      You pretty much can't.

      Do you have any idea how many hoops database server programmers have to jump through to work around this?

    6. Re:What do you mean by versioning? by FranTaylor · · Score: 1

      just don't let the power go out mid operation

      WRONG, ask RedHat about their filesystem promises. You can most certainly let the power go out mid-operation and expect data integrity when you power back up again. If the power goes out mid-operation, you discard the operation in progress when the power went down. Everything else is intact. This is guaranteed behavior on any modern operating system. Every modern database expects this behavior from the operating system.

    7. Re:What do you mean by versioning? by FranTaylor · · Score: 1

      That's why you should be careful running an enterprise file system on consumer-grade drive.

      this is not about drives, it's about filesystems and the promises that they make. if you sync your data to the disk, it is still there even if the power goes off. If you don't sync your data, who knows. The point is that filesystems ARE transactional. If you get back success from the sync operation, your data is there, period.

    8. Re:What do you mean by versioning? by FranTaylor · · Score: 1

      what is to know?

      transaction: I say to the filesystem, "please store my data" The filesystem says "ok your data is stored" this is a transaction.

      filesystem: a database that holds its data in files and uses pathnames as indexes

      database: a way to store data

      database file: storing a database in a database

    9. Re:What do you mean by versioning? by Anonymous Coward · · Score: 0

      He means that if a filesystem has a transactional interface, if you started to write data to the harddrive, you could stop and rollback any changes you made from the start of your write, exactly the same has how transactions work in a database. Begin transaction, write data, commit transaction. Newer version of NTFS does support this, even distributed across systems and can even tie NTFS transactions in with database transactions. This means you can make changes to the filesystem of several different computers along with changes to a database, and make sure when the commit completes successfully, that all data was committed atomically.

    10. Re:What do you mean by versioning? by angel'o'sphere · · Score: 1

      As all three definitions of you are wrong I suggest to read this post: http://slashdot.org/comments.p...

      And if you don't grasp the hint: read wikipedia. Or much better: a few books about computer science.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    11. Re:What do you mean by versioning? by Anonymous Coward · · Score: 0

      You're missing the point. RedHat defines and operation as a single write to the HD and any required FS metadata changes required to make that write. In this sense it is transnational. But from the application's point of view, it was not done writing, thus it is NOT transactional at a higher level. You're looking at it from the wrong abstract layer. An application breaks up a single large write into many smaller writes that the FS can handle. An individual FS write is transactional, but relative to the other writes, it is not.

      A simple example of this. Fill a file with 1TB with a repeating pattern of "11". Then start writing a pattern of "10" and 500GB into writing to the file, unplug the power. When you come back up, about 1/2 of the file will be filled with "10" and the other half "11". A transactional file system would leave the entire file as "11" or "10" but not a mix.

    12. Re:What do you mean by versioning? by Anonymous Coward · · Score: 0

      transaction: I say to the filesystem, "please store my data" The filesystem says "ok your data is stored" this is a transaction.

      Not the same thing. EXT4 defines a transaction as 5 seconds worth of data or 1/4 the journal size. When you write to the HD, you never know if all of the data you've written will be contained as a single transaction. When if you start writing 1 second before the next transaction window? What if all of your writes need more space than what the journal can hold? Now your writes are no longer commited as a single transaction.

    13. Re:What do you mean by versioning? by Anonymous Coward · · Score: 1

      I am the original AC you replied to about "not transactional".

      Aside from all the arguments about POSIX semantics above, which I also think are also relevant, what I really meant was that the very idea of what constitutes a transaction, i.e. a meaningful update boundary for commit or rollback, is an application-level or human-level decision which is NOT exposed to the filesystem layer. There is no filesystem phrasing for "begin transaction"..."commit" to break the stream of different low-level operations into these meaningful chunks. This extra information is what a version control system obtains from the user by requiring explicit commit or snapshot decisions.

      Tools like Dropbox can try to infer transaction boundaries by monitoring application process activities and looking for idioms like a batch program modifying a file, closing, and exiting; or an editor writing a new file, flushing, and renaming; or a program locking, writing, and unlocking a file; or a long-running interactive application making a flurry of writes and then pausing, because it just made another automatic save. Such heuristics require a close watch on the client system as a remote filesystem with its own caching and buffering can further obscure many of these patterns by delaying, reordering, and merging request streams from multiple applications.

    14. Re:What do you mean by versioning? by Anonymous Coward · · Score: 0

      The point is that filesystems ARE transactional.

      That's per write. We're talking about multiple writes. Whoosh.

      Synchronous writes return as soon as the kernel buffer commits. Do you expect a multi terabyte file to fit in your kernel buffer? We're talking about 64KB transactions more than likely. These do no guarantee file level transactions, or file system level transactions.

    15. Re:What do you mean by versioning? by Anonymous Coward · · Score: 0

      > what is to know?

      In your case, a lot.

    16. Re:What do you mean by versioning? by Anonymous Coward · · Score: 0

      Are you saying that consumer drives don't implement FLUSH CACHE (EXT) and FUA properly ?

    17. Re: What do you mean by versioning? by Anonymous Coward · · Score: 0

      Only if the disk doesn't lie and just has it in the controllers cache.

    18. Re: What do you mean by versioning? by Anonymous Coward · · Score: 0

      How can you assure atomic commits across multiple computers? Let's say you've completed the transaction successfully on 2 computers in preparation for the global commit. One computer succeeded in the commit, one failed. The one that succeeded can't be rolled back, as once a transaction is successfully committed, that's it.

    19. Re:What do you mean by versioning? by shutdown+-p+now · · Score: 1

      Filesystem interfaces are not transactional

      That depends on the filesystem. NTFS, for example, has ACID snapshot-isolation transactions on filesystem level since Vista.

    20. Re:What do you mean by versioning? by WOOFYGOOFY · · Score: 1

      No you can implement transactional processing with full ACID guarantess on top of a non-transactional, non-fail-safe file system, even on that quits mid process- i.e. the plug gets pulled out in the middle of a transaction. Absolutely you can. I refer you to Jim Grey's "Transaction Processing" probably the greatest book on this subject ever written. He explains it so well anyone could implemnent it. Reading that book made me realize I COULD write a fully functional database if the urge was ever to overwhlem me. It will make you realize that too.

      God bless you Jim, wherever you are.

    21. Re:What do you mean by versioning? by Anonymous Coward · · Score: 0

      I think that's what the other AC's point is: if you jump through enough hoops, you can be almost* certain that you can reach a point where your data has been committed to the drive.

      *: lol, you thought the raid array controller was obeying write barriers and flushing the write cache as requested? But hey, that's why they've got battery backups!

    22. Re:What do you mean by versioning? by Anonymous Coward · · Score: 0

      High end RAID controllers don't implement them, they expect you to buy a $200 battery module to deal with it.

  22. Versioning file system? by VAXcat · · Score: 1

    There's this thing called VMS....

    --
    There is no God, and Dirac is his prophet.
    1. Re:Versioning file system? by Anonymous Coward · · Score: 0

      http://sparkleshare.org/

    2. Re:Versioning file system? by Virtucon · · Score: 1

      There *was* a thing called VMS . http://h71000.www7.hp.com/comm...

      --
      Harrison's Postulate - "For every action there is an equal and opposite criticism"
    3. Re:Versioning file system? by gstoddart · · Score: 1

      For the love of god when will HP stop having such idiotic URLS?

      --
      Lost at C:>. Found at C.
  23. ZFS + TimeSlider in Solaris by Anonymous Coward · · Score: 1

    I'm not suggesting you switch, but check out how the features of the ZFS filesystem have been integrated into the desktop filemanager (Time Slider feature) in Solaris:

    http://java.dzone.com/news/killer-feature-opensolaris-200
    http://www.serverwatch.com/tutorials/article.php/3831881/Say-Cheese-OpenSolaris-Time-Slider.htm
    http://www.oracle.com/technetwork/articles/servers-storage-dev/autosnapshots-397145.html

    1. Re:ZFS + TimeSlider in Solaris by Anonymous Coward · · Score: 0

      If I remember correctly, ZFS is a write once filesystem.. you never overwrite files, it ends up saving the differences separately. So every time you press save for any file, you have a new "snapshot" (not sure of the correct term). Time slider will let you see every version, even one from 30 seconds ago. You can also see deleted files etc. It kind of makes "secure erase" impossible for individual files.

    2. Re:ZFS + TimeSlider in Solaris by willy_me · · Score: 1

      Yes, and that virus that infects your computer will also be unable to make any changes to "snapshots" on the server. Snapshots are read-only, and that is a good thing.

  24. Re:POSIX I/O is not really a good fit for versioni by FranTaylor · · Score: 1

    If someone updates a file in place, do you really want to create a new version for every write call?

    This is precisely how VMS does it, it works great. You can control how many generations it keeps. You can manually delete older versions if you want. You can explicitly refer to the older versions in the path if you want. If, for instance, you are creating a database file, you can disable the versioning.

    Wow, mainstream 1970s technology is just way too advanced for this crowd.

  25. Re:Are we asking a question? by Anonymous Coward · · Score: 0

    Indeed, sometimes these questions are a bit weird. "Hey guys, I'm using Windows and everything works fine, but I'd like to use Linux because."

  26. So much hate here.. by zacherynuk · · Score: 1

    ..Why?
    It's not 2001 anymore - your jobs shouldn't be at risk if you are doing them correctly.

    Why not simply compare and contrast, dig deep and think. Compromise your sensibilities and explain to the OP how YOU would best achieve the following:

    A real time replicated block file system for the purposes of users saving and sharing files to offer some form of business continuity when things fail
    ^ With the ability for a user to restore a file from 1 hour previous. This file may have been a test file, a Bloomberg stream file or just a data entry clerk doing it wrong for 30 minutes.

    How? - Give examples of client software, eg: Calc, Desktop OS eg: MINT and whatever backend solution you desire.

    Don't just be a troll or a cunt. Make some news.

    1. Re:So much hate here.. by Anonymous Coward · · Score: 0

      Because we dislike both the asker and you. Go choke on a bucket on dicks.

    2. Re: So much hate here.. by Anonymous Coward · · Score: 0

      Listen dick basket, there have been plenty of good ideas thrown out already. Why you come down here throwing down hate like that!

    3. Re:So much hate here.. by Anonymous Coward · · Score: 0

      Having a bad day, 12 year old?

    4. Re:So much hate here.. by St.Creed · · Score: 1

      Just use Dropbox. It satisfies all of the requirements in the summary and it's easier to set up than a fileshare, for most users.

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
  27. Is a versioning file system really the right tool? by dskoll · · Score: 1

    Why not a revision control system like SVN or git?

  28. Re:Is a versioning file system really the right to by FranTaylor · · Score: 1

    RTFA:

    " I just want a simple file share"

  29. Seafile by Anonymous Coward · · Score: 0

    http://seafile.com/en/home/

  30. rsnapshot by Anonymous Coward · · Score: 0

    This is what you want. Anything using rsync rules.

  31. Re: Are we asking a question? by Anonymous Coward · · Score: 0

    because Linux is stable, requires much less horsepower to do more than a Windows box....blah blah blah. Ya. It's usually something like that.

  32. "...not a document management utility" by msobkow · · Score: 1

    "I want document management, but not a document management utility."

    Don't fight it. Use the right tools for the job.

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:"...not a document management utility" by angel'o'sphere · · Score: 1

      The right tool for the job is the tool that does what he wants, not the tool you think he should learn to use.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  33. Re: Are we asking a question? by Anonymous Coward · · Score: 0

    And it still is trash-talk, as Linux is neither of those things. It's currently the most unstable and slow operating system.

  34. Simething simple you missed? by Orgasmatron · · Score: 4, Interesting

    rsync with the --compare-dest option will give changed files, and --link-dest will give whole file trees at set times.

    You can do it pretty simple, or quite complicated, depending on your needs and preferences.

    rsync --link-dest makes a new tree with the current time, using only enough space for the directory tree and the changed files. On my box, I use it in a cron that runs every 5 minutes and cycles through my backup list. If any of them are older than the interval, it fires off the backup script specific to that type of connection (local LVM, nfs, CIFS/SMB, ssh, etc).

    A second cron then prunes those directories so that I've got fewer copies as I go back in time. An example would be pulling a copy every 15 minutes and keep every copy for 2 weeks, keep one from each hour for a month, one per day for a year, one per month for 10 years, and one per year forever.

    This can be easily adapted to other schemes. --compare-dest will make a tree with just the changed files, which you can then gather up and sort into the archival tree. Run a second (plain) rsync to sync up the comparison directory when done.

    --
    See that "Preview" button?
    1. Re:Simething simple you missed? by bartle · · Score: 3, Interesting
      I would also recommend looking at rsnapshot which is built on top of rsync.

      I used to use a development system where the entire fire tree was mirrored at the top of every hour. Recovering old files was as simple as navigating to a different directory.

      Personally, I like the rsync solution because it is filesystem agnostic. It also has been around for a long time; whatever you're trying to do, I can guarantee that someone was doing it with rsync 20 years ago.

  35. Alfresco by systemeng · · Score: 1

    In a past life, I setup the free version of Alfresco for my teams. Configuration can be tough for those who don't like insanely deep trees of config files but it has a nice webdav server which integrates with the rest of it's quite awesome versioning capabilities. It's great for versioning anything that isn't source code.

  36. Old Systems by Anonymous Coward · · Score: 0

    As a friend said back in the early 1980s: "The best that can be said about Unix is that it has only put operating system development back 20 years".

  37. Re:Is a versioning file system really the right to by dskoll · · Score: 1

    Yes, that's what the OP said he or she wanted. But is it really what's needed for solving the problem at hand?

  38. Layering filesystems under Linux by downwa · · Score: 1

    Linux, in good Unix tradition, is designed to build things in pieces, which can work together. A number of Linux filesystems are designed to be layered on top of other filesystems. One such filesystem is the distributed, fault-tolerant Glusterfs (http://www.gluster.org/). You should be able to layer it on top of a number of other filesystems which can do versioning or snapshots (e.g. ZFS or Btrfs).

    --
    Life's a lot like money-- you spend it, then it's gone. Spend wisely.
  39. Re: Are we asking a question? by Anonymous Coward · · Score: 0

    That's why large scale providers (ie. Google, et al.) Use Linux over Windows, right? Get a clue.

  40. WEBDAV + SVN by serviscope_minor · · Score: 1

    Apache can serve webdav shares. It can back them with SVN.

    WebDAV can be mounted as a FS by all major OSs, and SVN also has a web based history. You need to provide some auth system to hook into (obviously), but otherwise it works really very well.

    --
    SJW n. One who posts facts.
  41. Alfresco community does what you want by Anonymous Coward · · Score: 0

    but its horrible

  42. No. by Anonymous Coward · · Score: 0

    Answer: No.

  43. Re: Are we asking a question? by Anonymous Coward · · Score: 0

    Nah, it's free and hackable. At Google or Facebook scale you have machine hardware failing at rates where a few software crashes on top do not matter. You have to deal with any machine going down at any random time anyway. Because they do. Regularly (several machones per day)

  44. webDAV over SVN by Anonymous Coward · · Score: 0

    I used to use SVN as a mountable WebDAV target and then stash all my files there. SVN took care of auto-revisioning. I just went into the web interface I had for SVN in order to pull out the version I wanted from the past.

    I've moved from SVN to git and never bothered to set this back up, but I suspect some similar WebDAV to git route is also available.

  45. Which users? by Culture20 · · Score: 1

    Different users find different things friendly. I want options and configurability. Grandma Culture20 wants one button and a wizard.

    1. Re:Which users? by petherfile · · Score: 1

      sorry, the user friendly bit was completely a mod edit, I asked for redundant or highly available or something: not user friendly.

  46. Re: Are we asking a question? by Anonymous Coward · · Score: 1

    No. GNU/systemd is the unstable operating system. Linux is just the kernel.

  47. There are a few options. by mr_mischief · · Score: 4, Informative

    Contrary to popular rumors, there are a number of ways to do what you want. I can't vouch for all of these combinations working and wouldn't be too optimistic about tackling some of them. The more advanced stuff can take quite a while to ramp up to speed.

    If you don't mind FUSE as an intermediary, there's gitfs that uses git as a file system (which is kind of is anyway, beyond being just a VCS). It creates a new version on every file close. You can point it to a git remote on the same machine or across a network which lives on any filesystem.

    You already found that there are some non-mainline kernel modules for filesystems like next3, ext3cow, or tux3 that do versioning on write. NILFS is actually in the kernel these days (since 2.6.something) . More information about NILFS2 shows that it's somewhat slow but that it is in fact a stable, dependable file system.

    Subversion has a feature that you can put WebDAV in front of it, mount the WebDAV as a filesystem somewhere, and every write creates a new revision of the file in SVN. That gets you networked and versioned. This works similarly to gitfs but uses WebDAV. You could if you wanted use dav2fs in front of that to treat it like a normal file system again.

    You can then share any of these over SMB with Samba. Or you can shared them via NFS.

    If you need really high-end, fast, replicated network filesystems you can use any of the clustered storage systems that will use a storage node's underlying files with any of these below that, but that will put your revisions underneath everything else rather than on top. Then there's using something like gitfs with the remote on top of, for example, DRDB, XtreemFS, or Ceph (for example even across CephFS which presents Ceph as a normal POSIX filesystem). This latter option puts your revisions closer to the user and then each revision gets replicated.

    I've personally never used some of the more exotic combinations listed here. You could in theory put NILFS2 on LVM with DRBD as the physical layer (since DRBD supports that) and then serve that file system via Samba (CIFS) or NFS which I would expect to work well enough if slowly.

    1. Re:There are a few options. by retchdog · · Score: 1

      so, which one would you vouch for?

      since you lead off with FUSE (jesus christ) layered on git (wtf?), i really want to know which one of these you think is the most stable and whether you'd vouch for it if your life depended on it.

      --
      "They were pure niggers." – Noam Chomsky
    2. Re:There are a few options. by mr_mischief · · Score: 1

      I doubt my life will ever depend on the OP's needs of a versioning distributed filesystem.

      If I had to pick some combination out of that which I've seen work well with my own eyes, I'd share NILFS2 over CIFS or NFS, possibly with DRBD underneath LVM underneath the NILFS2. I've never done that exact combination. I have run NILFS2 on top of LVM, and I have run DRBD underneath LVM. I've shared lots of things, including NILFS2 and various other FSes on LVM over CIFS and NFS. I've never done DRBD under LVM with the NILFS2 filesystem on top, though. I wouldn't be scared to recommend testing it, but I wouldn't rush it into production that way.

    3. Re:There are a few options. by petherfile · · Score: 1

      Do any of these options work without a single point of failure? Ceph by itself sounds awesome, but how do you get versioning of some sort on top of it without introducing a single point of failure? I guess you could stick load balances in front of things like the WebDAV option, but that is getting very complicated. DFS/VSS does quite easily introduce a system without a single point of failure and is still looking like it's mighty useful compared to all available in the Linux world.

        I think you present the first real options of all the posts here but they are not easy options.

    4. Re:There are a few options. by mr_mischief · · Score: 1

      Getting the network storage enabled without a single point of failure is easy, especially if using a distributed replicated system. Getting versioning to work without a coordination point for the versioning is a much more difficult problem to solve.

      I want to note that while many people voice distrust or even disgust with it, FUSE by itself shouldn't disqualify a solution. Lots of high-performance filesystems get their POSIX FS layer via FUSE.

      Also, while versioning and clustering are a different problem the similar issue of frequent snapshots and clustering is well solved. Gluster, MooseFS, CephFS (part of Ceph), and others support snapshotting just fine. No matter how frequently you snapshot, it's not quite the same as versioned files. It is often worth comparing the two, but one is not a true replacement for the other.

      Something like git that's designed to allow branching and merging is helpful here, but as has been pointed out using a FUSE-mountable file system like gitfs over a git remote is not the cleanest of solutions either. There are application libraries that handle checking things into and out of git pretty transparently, buy altering applications is definitely not the same as doing something at the FS level. All the clients fetch the changes from the repo, and the repo can be cloned elsewhere for backup or stored on a clustered FS itself or whatever. Since gitfs gives every client all the history, all clients have a record of all the versions. I'm tempted to set gitfs up and test it heavily, but I've only barely poked at it before now so I can't say how sturdy a solution it might turn out to be.

      Something like NILFS2 or tux3 handles versions but only knows about the one file system. You gain storage reliability by putting it over something like DRBD to replicate the storage, but it's expecting to be a single master of that FS frontend.

      So, yeah, it's easy to get either clustering with no single point of failure or to get file versioning. It's a bit more challenging to combine versioning with no single point of failure for the data storage. It may be a downright difficult problem to get the versioning itself to have no single point of failure.

      Putting a distributed parallel FS that uses a local POSIX FS on each node, and then using a versioning file system on those nodes is, as I said in a previous post, not ideal. It makes versions on each of the storage nodes, but then your version browsing and restoration is on each individual node. A client app that connect to one or another backend directly, lets you pick a version to restore, then writes that back through the cluster may be a good enough work around in some environments.

    5. Re:There are a few options. by Anonymous Coward · · Score: 0

      Thank you, this is awesomely helpful of you.

        I'm starting to think cephFS does do all the things that VSS/DFS do (and a lot more besides) but it's not exposed to the user in a nice way like VSS is. Or maybe it can be, but documentation is poor. Maybe we can consider cephFS as a direct replacement for VSS/DFS. VSS is only snapshots and not versioning, but the way it is exposed makes it excellent for user cock up self fixes.

    6. Re:There are a few options. by Anonymous Coward · · Score: 0

      Awesome, it says I'm logged in but the post comes as an anonymous coward... Where's the bug spray?

    7. Re:There are a few options. by mr_mischief · · Score: 1

      Well, if you want frequent filesystem or directory snapshots rather than per-file per-change versioning then your options are much broader.

      LVM can do snapshots besides doing disk pooling, and can do a sort of clustering. Btrfs pools disks and does snapshots without the clustering. XFS has indirect support for snapshots -- it allows one to freeze the filesystem and snapshot using the volume manager. Ceph is a highly available clustered storage system with a POSIX FS face and does snapshots. Lustre allows taking LVM snapshots of its MDT and OST filesystems, although doing so often could be a bottleneck. Gluster (since 3.7 or so) actually wraps around LVM's snapshot tools so long as each "brick" is on a thin LVM that contains no data besides the brick.

      ZFS does pooling and snapshots. It's supported-ish on Linux both as a kernel module and as a FUSE filesystem. It has much better support on the BSDs and of course on OpenSolaris/Solaris.

      It's notable that the Ceph folks recommend Btrfs underneath Ceph as the local filesystem for development and testing but XFS under it (or optionally ext4) for production at the moment.

    8. Re: There are a few options. by Anonymous Coward · · Score: 0

      So, what would you want to do before putting the most reliable Linux solution into production? Let's make it easier; it's not your life on the line, just your career.

    9. Re: There are a few options. by mr_mischief · · Score: 1

      "Career" is still hyperbole. A project may fail. It may even be one job at stake. It wouldn't end a career.

      So, assuming a make-or-break project for an employer are the stakes, here's what I'd do. First, I'd do an initial evaluation whether doing this on Linux is actually worthwhile given the alternatives on other Unix platforms. Second, I'd pick something for safety over performance. Given the budget, I'd pay for development on one of the OSS versioning filesystems to do clustering or one of the OSS clustering filesystems to do versioning.

      I'd probably check to see if frequent snapshots are valid rather than per-file per-write versioning. That turned out to be the case in this thread. That gives many workable and fairly conventional options on Linux.

      If per-write versions were really that important, and it really had to be on Linux, and really had to be shared as well, I'd probably alter my application to write through git libraries at the application level. If not git, then maybe Mercurial or Bazaar. If I didn't have control over the application, I'd look into inotify to do commits based on those writes.

      If it really needs to be in the filesystem, really needs to be on Linux, and really needs to be per-write versions, I'd use something like NILFS2 on LVM with a SAN-backed LVM, and have read-only access shared out over NFS or CIFS.

      No matter what I chose as my primary target, I'd choose a couple other alternatives and test the hell out of all three. I wouldn't greenlight anything for production until I was happy.

      Really, if your employer expects anything less stringent on their production infrastructure than a full testing and development cycle and blames the implementors for failures of overspecified and undertested software as ordered by management, then you want a new employer anyway.

  48. sftp fuse + rsnapshot by Anonymous Coward · · Score: 0

    Simple way with sftp / fuse network file share, plus rsnapshot. Obviously need to tweek for performance and preferences, but good for small networks and quick and dirty shares. Ssh just works, and provides encryption along with lots of methods to access.

  49. I miss OpenVMS by Abe677 · · Score: 1

    Going for the dumbest comment today... I really miss OpenVMS and files with version numbers. That is all.

  50. Re:Is a versioning file system really the right to by Anonymous Coward · · Score: 0

    You are precisely the reason "ask slashdot" sucks.

    "Sure - I know that's what he *asked* for - but since I don't know that I"ll answer another question which I can or berate the questioner for wanting something I can't provide."

  51. Doable with either Linux+LVM snaps or ZFS+snaps by Anonymous Coward · · Score: 0

    WIth either LVM snapshots or ZFS snapshots, you just need to use Samba's vfs_shadow_copy2 module and you get exactly that "Previous Versions" functionality you're wanting for Windows users accessing your share. We're on FreeBSD/ZFS using Samba with that module, and users can restore previous versions when and if the need arises.

    1. Re:Doable with either Linux+LVM snaps or ZFS+snaps by Anonymous Coward · · Score: 0

      The weird thing is that "Previous Versions" needs the Server (LanmanServer) service running on the client to function.

  52. glusterfs by manu0601 · · Score: 1

    Glusterfs trash feature is able to recover previous file versions.

    1. Re:glusterfs by petherfile · · Score: 1

      Sounds cool, seems to not have been properly implemented yet? Still in development?

    2. Re:glusterfs by manu0601 · · Score: 1

      It is supposed to wok in latest 3.7.x releases.

  53. Re:POSIX I/O is not really a good fit for versioni by shutdown+-p+now · · Score: 1

    What happens if someone opens a file and changes a single 80-byte line inside, one byte at a time?

  54. DRBD or md RAID1 over NBD or Ceph by Anonymous Coward · · Score: 0

    Once you have selected a versioning file system, it is easy to add DFS functionality to it at the block layer. The biggest factor will depend on the latency and bandwidth between DFS nodes but some things to look at include:

    Distributed Replicated Block Device (DRBD)

    Meta-Device RAID 1 mirror across a physical and Network Block Device (NBD)

    Or Ceph's RADOS Block Device (RBD)

  55. Now you're asking a different question by Anonymous Coward · · Score: 0

    What YOU are talking about is what "undo" functions of programs are for. It would be irrational to develop an entire network architecture from clients to servers and storage that is geared to provide infinite storage for infinite granularity of infinite versions of files where 99.99999% of the intermediate versions (or 79 of the 80 changes in your example) will never be wanted of needed. At some point, human users need to know what they want and execute their actions with at least the level of responsibility and intelligence of a chimpanzee.

    Any proper solution should [1] allow humans to decide that the data they have at a particular moment is significant and deliberately tag it as a version they can return to and/or [2] auto-tag-and-store versions at specific intervals that the human users are trained to be aware of. In most situations, institutions will find that the costs and hassles of very-fine-granularity versioning are higher than the losses incurred when on rare occasions a user screws up and has to go back to an archive from perhaps an hour or two earlier and re-do the hour or two of lost work.

    As is often the case with technology, there IS no right answer.... there is a requirement for an engineer to get to the specific requirements of a specific situation and intelligently select an imperfect but best-fit solution that hits the right trade-offs between cost, convenience, safety, etc.

    1. Re:Now you're asking a different question by shutdown+-p+now · · Score: 1

      Arguably, a proper solution is to provide transactional semantics for modification. Saying, "okay, I'm beginning to write a new version ... write ... seek ... write ... seek ... write ... okay, I'm done". And let the OS and the FS take care of applying or reverting it, enforcing consistency, and so on.

  56. Re: Are we asking a question? by Anonymous Coward · · Score: 0

    Holy shit, you are one phenomenally moronic troll. Seriously, you can't even pull off a simple trolling attempt without broadcasting to the world what a complete fucking idiot you are. Amazing!

  57. Sparkleshare on a git repository by complete+loony · · Score: 1

    Everyone works with their files locally, changes are synced via a common server. Everyone has a compressed backup of the complete history of the entire filesystem for disaster recovery. Everyone should be able to browse and recover any version of any file without adding load to the server, though usability might be slightly lacking. You could also setup a FUSE filesystem on a linux box to browse the history.

    You may need to partition the file storage into multiple repositories, so that people don't need to synchronise folders that they don't use.

    --
    09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
  58. Re:OwnCloud / Seafile by Herve5 · · Score: 1

    While most of the nifty features are linked to the paying version Seafile seems quite cool, but I see basic users like me cannot install it as a php script on a shared server
    I'm still using Owncloud, even not the last version, for daily syncs of a dozen machines from desktops to phones and tablets, and it has "just worked" for a couple of years now. Its only downpoint is, contrary to Dropbox no local-loop transfers are allowed (everything must transit through the server). This is related to the way Owncloud handles versioning; which is heavily discussed in their forums (https://github.com/owncloud/client/issues/230), but if this feature does not bother you I see no other drawbacks.

    --
    Herve S.
  59. Samba + VFS by Anonymous Coward · · Score: 0

    Samba can do that for you with VFS (Virtual File System).
    https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html#id2651694

    Recycle module might be enough for you:
    https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html#id2651247

    But I think you are after shadow_copy module:
    https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html#id2651694

    If you need it on large scale deployments then I would suggest looking at Samba cluster or GlusterFS integration.
    In both cases you will need high throughput and low latency network.
    If you plan to use it on gigabit ethernet with Intel cards, please change network card buffers (ethtool) and double them,
    if possible, this should increase IOps you can push through the network.

  60. A script.. by swilver · · Score: 1

    #! /bin/bash

    # stop on errors
    set -e

    scriptname=$(basename $0)
    pidfile="/var/run/${scriptname}"

    # lock it
    exec 200>$pidfile
    flock -n 200 || exit 1
    pid=$$
    echo $pid 1>&200

    # Rest of code

    SRC=$1
    SNAPSHOTS=$SRC/.snapshots
    MOST_RECENT="$SNAPSHOTS/1 hour ago"
    RSYNC="/root/rsync-HEAD-20130616-0452GMT/rsync"
    RSYNC_OPTIONS="-ah --no-inc-recursive"

    LINK_DEST=""
    FILTER=""

    if [ -d "$MOST_RECENT" ]; then
        LINK_DEST="--link-dest=\"$MOST_RECENT\""
    fi
    if [ -f "$SRC/.snapshots-filter" ]; then
        FILTER="--filter='merge .snapshots-filter"
    fi

    CMD="$RSYNC $RSYNC_OPTIONS $FILTER --exclude=.git --exclude=.snapshots $LINK_DEST \"$SRC/\" \"$SNAPSHOTS/.temp/\""

    mkdir -p "$SNAPSHOTS/.temp"
    eval $CMD
    touch "$SNAPSHOTS/.temp"

    #
    function moveBackup {
        if [ -d "$1" ]; then
            if [ $(((`date +%s` - `stat --format %Y "$1"`) / 60)) -ge $4 ]; then
                if [ -d "$2" ]; then
                    if [ ! -d "$3" ]; then
                        mv "$2" "$3"
                    else
                        rm -rf "$2"
                    fi
                fi
                mv "$1" "$2"
            fi
        fi
    }

    moveBackup "$SNAPSHOTS/around 3 months ago" "$SNAPSHOTS/around 6 months ago" "$SNAPSHOTS/around 9 months ago" 259110
    moveBackup "$SNAPSHOTS/around 1 month ago" "$SNAPSHOTS/around 2 months ago" "$SNAPSHOTS/around 3 months ago" 86310
    moveBackup "$SNAPSHOTS/about 15 days ago" "$SNAPSHOTS/about 23 days ago" "$SNAPSHOTS/around 1 month ago" 33030
    moveBackup "$SNAPSHOTS/about 7 days ago" "$SNAPSHOTS/about 11 days ago" "$SNAPSHOTS/about 15 days ago" 15750
    moveBackup "$SNAPSHOTS/about 3 days ago" "$SNAPSHOTS/about 5 days ago" "$SNAPSHOTS/about 7 days ago" 7110
    moveBackup "$SNAPSHOTS/24 hours ago" "$SNAPSHOTS/about 2 days ago" "$SNAPSHOTS/about 3 days ago" 2790
    moveBackup "$SNAPSHOTS/8 hours ago" "$SNAPSHOTS/16 hours ago" "$SNAPSHOTS/24 hours ago" 870
    moveBackup "$SNAPSHOTS/4 hours ago" "$SNAPSHOTS/6 hours ago" "$SNAPSHOTS/8 hours ago" 270
    moveBackup "$SNAPSHOTS/2 hours ago" "$SNAPSHOTS/3 hours ago" "$SNAPSHOTS/4 hours ago" 90

    if [ -d "$SNAPSHOTS/1 hour ago" ] ; then
                    mv "$SNAPSHOTS/1 hour ago" "$SNAPSHOTS/2 hours ago"
    fi

    mv "$SNAPSHOTS/.temp" "$MOST_RECENT"

    chown --reference="$SRC" "$SNAPSHOTS"
    chown --reference="$SRC" "$MOST_RECENT"

  61. Re: Are we asking a question? by Immerman · · Score: 1

    Software failures will scale up similarly. If you propose for example that, on any single PC, a Linux crash is 10x more likely than a hardware failure, then they're be dealing with dozens of crashes per day - and that would have to be some pretty stable software. What's your crash to hardware-failure ratio?

    --
    --- Most topics have many sides worth arguing, allow me to take one opposite you.
  62. Re:POSIX I/O is not really a good fit for versioni by jbolden · · Score: 1

    If someone updates a file in place, do you really want to create a new version for every write call?

    Potentially yes. You might throw some of those away but...

    What you can do is make hourly snapshots and make them available as read only shared directories.

    And then the user on a file independent basis needs to know when bunches of changes happened. So for example file X had:

    Large number of changes between April 2015 and May 2015
    large number of changes between Nov 2014 and Jan 2015
    large number of changes between Sep 2014 and Nov 2013
    etc... with no changes in between. Other files are going to have totally different bursts of activity.

  63. Re:POSIX I/O is not really a good fit for versioni by jbolden · · Score: 1

    Open, change, close is a version.
    Open, change is not a version since it didn't get closed.

    The versioning pattern can keep older it doesn't have to be just "last 10". On better versioning system it can be:
    Last 10, up to 1 per month for 12 months. 1 per 6 mo forever. See Google Docs or Wikipedia for good examples of this.

  64. Deja Dup by Anonymous Coward · · Score: 0

    You might want to have a look at Deja Dup

  65. Performance? by petherfile · · Score: 1

    What is the performance of this sort of thing like? I'm thinking of the case of a business using this constantly. Is it going to work for a few hundred users using a share daily? Or is that just going to make it die? I was thinking something that was a copy-on-write type thing, not a slow cron job type thing, but if it does perform OK...

    1. Re:Performance? by Orgasmatron · · Score: 1

      I don't know. I don't have that many users.

      I can tell you that one of the filesystems I archive has lots of small-ish files in it. Like over 300,000 files averaging like 250kb each. The rsync takes a few seconds to scan everything. Lots of changes or changes to big files will slow things down during the copy.

      Oh, a handy tip for running big Linux fileservers: have a minimum of 1 GB RAM per 1 TB of storage. No matter what you are doing with your server, you want lots of room for the stat cache. Even more if you are scanning regularly looking for changes.

      As long as the system functions well as a file server, the versioning backend shouldn't hurt too much. A slow sync shouldn't interfere with normal usage, it just reduces the maximum scan frequency.

      One small disadvantage to this system is that it has a window. Things can happen in that window that will never be seen. If you have one of the very rare cases where you absolutely need to catch every single change, you can't use this; you need to use COW.

      For everyone else, this is a very good solution. And it is fun to set up. One more tip, think about your locks in advance, and pay attention to situations where it makes more sense to bail out entirely (and wait for the next pass) rather than waiting for the lock to clear.

      --
      See that "Preview" button?
    2. Re:Performance? by petherfile · · Score: 1

      Hmm, that's kind of piddle and crap compare to what I was looking at today, one department have over a million folders (24 terabytes) don't know how many files yet: taking too long. I'd be suspicious of performance scaling well to that sort of level.

  66. Re:OwnCloud / Seafile by Junta · · Score: 1

    So here we had a few admins and a bunch of 'normal' users. The normal users needed an admin to create a new group to facilitate sharing. With seafile, the users could create their own groups. That and frankly we hit a few bugs with sync and seafile seemed to do better.

    owncloud's document preview and the plugins were a bit worse than seafile's baked in, but primarily it's just a platform for replicating and sharing file content for us, we don't really care about anything beyond that. We don't use the commercial seafile.

    --
    XML is like violence. If it doesn't solve the problem, use more.
  67. Re:Mac OSX by Anonymous Coward · · Score: 0

    It does everything without crashing like WinDOS does.

    Correct, it just crashes different. e.g.: my fiancée's MacBook likes to crash the kernel when it tries to wake from sleep to check the status of the Magic Mouse.