For a graphical Linux distribution I'm looking for a file navigator/browser which makes merging of two directory trees as smart and efficient as possible. I imagine the following features:

  • compare files byte block by byte block if name and size is identical and overwrite if necessary without annoying non-sense question if files are identical
  • allow invokation of external command for differing files with files passed as argument (e.g. cmd -x $file1 -y $file2)
  • re-enqueueing of files which need user input (e.g. warning dialog with information about missing permissions for files) (I don't want to order the transfer of 5 TB of data and then see the next morning that the transfer was interrupted after 100 MB asking what to do with this 5 KB file lacking permissions)
  • optional: limited smart look-ahead in tree traversal: If the next files to be read are a 100 GB binary file and 15 small text files which require manual merging, it'd be smart to invoke the command for the first text files one after the other and compare the binary file in background when no I/O performance is required.

Together with the following features independent from directory merging:

  • immediate start of actions (not like Nautilus which counts the files and directories to transfer before starting)
  • support of ext4, Btrfs, CIFS (just to mention it, file access should be abstracted by the underlying kernel)

I'm using Nautilus which does most of the opposite of these proposals, yet there's no smarter handling of directory merging in Dolphin, Thunar. GNOME Commander is somehow programmable and therefore as smart as I tell it to be - I'd rather take advantage of more than just me ;) .

3 Answers 3


I would suggest taking a look at kdiff3 one way to get it is:

sudo apt-get install kdiff3


  • Smart Merge - if file doesn't exist just copy it
  • Invoke with --auto & -o to skip the gui if all merges can be done automatically
  • No prompts if files are identical
  • Does the file diffing for you
  • Not sure if you can tell it to save manual operations for later

Are you familiar with rsync? It "is a file synchronization and file transfer program for Unix-like systems that minimizes network data transfer by using a form of delta encoding.." (from http://en.wikipedia.org/wiki/Rsync).

If you don't like the command line, you can use Grsync enter image description here

Personally, I prefer the "Synchronize Directories" tool within Krusader because it lets me view a side-by-side list of non-identical files before I commit to overwriting anything: enter image description here

I'm not sure what you mean by "re-enqueueing". I suppose you mean that the file manager processes the files that don't require user input and leaves the remaining files for further processing? In Krusader, you can set "confirm overwrites". Unfortunately, if you merge 20 files and the third file requires confirmation, the synchronize tool will stop here, even if the remaining files would not require user input.

enter image description here

I suppose you could solve that problem by piping the output from a dry-run of rsync into another script, but that is going away from the GUI file manager idea.

  • Good points both, atmelino (and dry-run is supported by rsync at least at the command-line). But could you please edit your answer to list how each of the two matches the OPs requirements, e.g. "allow invokation of external command for differing files" and "re-enqueueing of files"? Thanks!
    – Izzy
    Sep 27, 2014 at 15:29

An example here from a python programming book may be (the start of) just what you are looking for especially if you add a little tailoring,

  • Free (both gratis and FLOSS)
  • Fully customisable
  • GUI or command line
  • Cross Platform
  • You can make it as smart as you need.

Personally I would think that extending it to use MD5 to check for files that are the same date/time & size could be a good idea.


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.