diff --git a/pkgs/tools/backup/bdsync/default.nix b/pkgs/tools/backup/bdsync/default.nix
new file mode 100644
index 00000000000..8ef846a8dca
--- /dev/null
+++ b/pkgs/tools/backup/bdsync/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, openssl, coreutils, which }:
+
+stdenv.mkDerivation rec {
+
+  name = "${pname}-${version}";
+  pname = "bdsync";
+  version = "0.10.1";
+
+  src = fetchFromGitHub {
+    owner = "TargetHolding";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "144hlbk3k29l7sja6piwhd2jsnzzsak13fcjbahd6m8yimxyb2nf";
+  };
+
+  postPatch = ''
+    patchShebangs ./tests.sh
+    patchShebangs ./tests/
+  '';
+
+  buildInputs = [ openssl coreutils which ];
+
+  doCheck = true;
+  checkPhase = ''
+    make test
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/man/man1
+    cp bdsync $out/bin/
+    cp bdsync.1 $out/share/man/man1/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Fast block device synchronizing tool";
+    homepage = https://github.com/TargetHolding/bdsync;
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ jluttine ];
+  };
+
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 8b31298701e..35c892fdffc 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1336,6 +1336,8 @@ with pkgs;
 
   bats = callPackage ../development/interpreters/bats { };
 
+  bdsync = callPackage ../tools/backup/bdsync { };
+
   beanstalkd = callPackage ../servers/beanstalkd { };
 
   beegfs = callPackage ../os-specific/linux/beegfs { };