5

There are dozens of file/folder comparison/sync/merge tools but I am looking for a specific graphical interface and functionality that is quite simple yet unfortunately quite hard to find:

  1. Manually choose two folders to compare; none is specified as source or destination
  2. Scan the two folders and display differences:
    • display is in a twin-panel, horizontally split interface
    • in each panel, a separate tree view is shown for the corresponding folder
    • folders are expanded in each tree only if they contain new or changed files
    • 'changed' can be either by content (for precision) or by timestamp (for speed)
    • only new or changed files are shown under each expanded folder
  3. Select files in a number of ways:
    • begin by selecting all new files on left or right tree; or all changed files on both trees (affected folders are automatically expanded if they have been previously collapsed)
    • optionally, deselect files under a specific folder, by just collapsing it
    • optionally, fine-tune the selection of individual files, by common mouse actions like single click, shift-click, control-click, shift-drag, control-drag etc.
    • alternatively, make a selection manually just by mouse actions, without starting by all new/changed files
  4. Copy selected files, either left-to-right or right-to-left; or delete selected files from left, right, or both trees
  5. Repeat steps 3-4 interactively, occasionally refreshing the view by going back to step 2, until the two folders are identical.

I am doing such comparison like every day to manually sychronize folders between machines using a portable disk. My typical folder contains around 30K files in 5K sub-folders, and is around 30Gbytes in total. Because of size, I do not actually compare file content, rather only timestamps. A typical session takes around 2-3 minutes for one day's changes. After e.g. one month of changes, it might take around 15 minutes because there is more to check.

Being able to do the comparison manually is important because I may e.g. have moved, copied or deleted a file by accident during the day without realizing it, and I can discover and correct this during the comparison. It is impossible to do this automatically; you need a manual process and a convenient graphical interface.

I have been using araxis merge for more than 10 years. Its model of use is exactly as described and I was very happy with it, at least on Windows. Unfortunately, it is not only commercial, but also not available for Linux. Using it over wine is a very poor experience. Worse, upgrading to Kubuntu 14.04 with wine 1.4-1.7, the program freezes when I move it to another screen. So I am looking for alternatives once more.

Beyond compare offers the same functionality and is available for Linux, but again, it is commercial. Also, it cannot expand automatically folders like Araxis merge (only if they contain new or changed files). You have to expand all folders to see the differences.

I have also tried meld, which is free and available for Linux. It looks like it offers the same functionality, and is quite pretty. Unfortunately it is extremely slow and its interface becomes unresponsive, so it is practically useless on large folders like mine.

So, is there any other alternative on Linux, preferrably free, that offers this functionality as described above?

1
  • Can I suggest moving to a distributed VCS such as mercurial. It is free, with the tortoise interface you can revert accidental changes and merging to the portable disk will take seconds. You will also benefit from a history of changes. Commented Sep 1, 2014 at 17:36

3 Answers 3

2

There is one interesting candidate you did not mention - I did not try to math it to your requirements, but it is certainly worth a try.

I think KDE kompare is one of the best tools in this area, directoy diff GUI.

As you do not need a merge tool, it may be an advantage that it has a less complex UI, compared to meld for example.
But on the other hand, you are possibly using some mergetool-related features of the UI that may be missing here.

What you see in the screenshot is a group of dockable windows, so you can freely arrange - or hide - parts of it.
There are both file lists, a list of matched file pairs, alist of difference "chunks", and the text diff view.
What is not shown is a panel showing the text diff.

Independent of the functionality itself, the detailed and consistent configurability of KDE GUIs should be helpful too if it is used frequently.


screenshot of <code>kompare</code>

"Kompare" by Original uploader was Robamler at en.wikipedia - Transferred from en.wikipedia; transfer was stated to be made by User:Nog2.. Licensed under Creative Commons Attribution-Share Alike 3.0 via Wikimedia Commons

man kompare

To give it a try, sudo apt-get install kompare

1
  • Thanks. I have tried kompare, but after playing around a bit, it seems nowhere near the functionality and interface I have described.
    – iavr
    Commented Aug 23, 2014 at 10:25
2

Can I suggest giving kdiff3 a try, while the graphical interface is not exactly as you specify as it lists a merged representation with the differing files & directories color coded it can perform just about all of the operations that you require plus 3 way merges.

  • Free/Gratis
  • Multiple platforms, KDE, Windows, Mac, others
  • Optionally hide matching files
  • Optionally specify a destination folder
  • You can choose between A->B, B<-A, Delete Both, and for text files Line by line merge, Lines from A then B, Lines from B then A, etc.
  • 3 way merges
  • Many, less thorough & safe, options to speed things up
  • Ignore patterns for file & directory names
  • Lots of other settings such as ignore white-space differences.

enter image description here

1

EDIT: My bad - ignore the answer - I did not see that automatic comparisons are something that you don't want to use. Using the --verbose output of rsync might help anyway to see the differences, even if you just use the --dry run option.

Based on the usage you are describing, rsync might be a very fast alternative. Say you have a folder called Important_stuff that you want to keep synchronized between a computer and an external hard disk. You could use the command:

rsync --recursive --update --times --verbose --exclude=Music* 'path/to/Important_stuff/ /path/to/externalhd/Important_stuff_backup

The --recursive option will go in the depth of the folder for subfolders and files, the --update option will only replace older files with newer files with the same name and add to the target folder new files while leaving anything else in place. The --times option tells rsync to use only the time stamp to do the comparisons, --verbose is to have an output of the command, especially if problems appear and --exclude, helps exclude files and folders that you don't want duplicated. One has to be careful about the path - the source folder needs an '/' at the end, while the target does not need it.

The command can be written in a text file, so that the next time you want to synchronize things you just do: sh Impstuff_to_disk.sh.

I have been using this method for years and works well for regular manual back-ups. The method does not involve any GUI, but you can use a file manager like Double Commander for simple comparisons. The screenshot shows the selection of files that exist in one folder and not in the other (Mark>Compare Directories):

Screenshot Double Commander

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.