version 0.0.3. deduperemoverb -> duperemoverb. extension named fideduperange.

master
Denis Knauf 2021-09-06 19:46:15 +02:00
parent e8273e2aae
commit 4d72462ea0
11 changed files with 46 additions and 18 deletions

View File

@ -2,3 +2,4 @@ source 'https://rubygems.org'
gem 'ffi' gem 'ffi'
gem 'sqlite3' gem 'sqlite3'
gem 'rake-compiler' gem 'rake-compiler'
gem 'rake-extensions'

19
README.adoc Normal file
View File

@ -0,0 +1,19 @@
duperemove(rb)
==============
Replaces `duperemove`s dedupe-functionality.
It is an own program, which uses the database like `duperemove`.
While `duperemove` scans directories and builds database, this program only dedupes files extents.
The advantage is, duperemoverb allowes incremental/partial deduplications.
While duperemove deduplicates any files registered in database, you can give a path, which files to deduplicate.
Files outside this path will be ignored, but will be deduplicated, if it shares same digests like extends of file inside this path.
Partial deduplication
---------------------
* /a/1 has two extents: 0x12, 0x54
* /b/1 has two extents: 0x54, 0xa8
* /b/2 has two extents: 0x90, 0xa8
If you call `duperemoverb dedupe /a`, `/b/1` and `/b/2` will be ignored, but the first extent of `/b/1` will be deduplicated with `/a/1` second extent.

View File

@ -4,18 +4,26 @@ require 'rake'
require 'rake/extensiontask' require 'rake/extensiontask'
require 'bundler' require 'bundler'
Rake::ExtensionTask.new( "deduperemoverb") do |extension| extensions = %w[fideduperange].map {|n| [n, Pathname.new( 'ext') + n + "#{n}.so"] }.to_h
extension.lib_dir = "ext"
extensions.each do |name, path|
Rake::ExtensionTask.new name do |extension|
extension.lib_dir = path.dirname
end
end end
task :chmod do task :chmod do
File.chmod 0775, 'ext/deduperemoverb.so' extensions.each do |_,path|
path.chmod 0755
end
end end
task :clean do task :clean do
File.unlink 'ext/deduperemoverb.so' if File.exists? 'ext/deduperemoverb.so' extensions.each do |_,path|
path.unlink if path.exist?
end
end end
task :build => [:clean, :compile, :chmod] task :build => [:clean, :compile, :chmod]
Bundler::GemHelper.install_tasks name: 'deduperemoverb' Bundler::GemHelper.install_tasks name: 'duperemoverb'

View File

@ -2,7 +2,7 @@
# vim: set noet sw=2 ts=2 sts=2: # vim: set noet sw=2 ts=2 sts=2:
require 'dencli' require 'dencli'
require 'deduperemoverb' require 'duperemoverb'
require 'ostruct' require 'ostruct'
require 'logger' require 'logger'

View File

@ -1,14 +1,14 @@
# vim: set noet sw=2 ts=2 sts=2: # vim: set noet sw=2 ts=2 sts=2:
require 'rake' require 'rake'
require_relative 'lib/deduperemoverb/version' require_relative 'lib/duperemoverb/version'
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.name = 'deduperemoverb' s.name = 'duperemoverb'
s.version = Duperemove::VERSION s.version = Duperemove::VERSION
s.licenses = %w[LGPLv3] s.licenses = %w[LGPLv3]
s.authors = 'Denis Knauf' s.authors = 'Denis Knauf'
s.homepage = 'https://git.denkn.at/deac/deduperemoverb' s.homepage = 'https://git.denkn.at/deac/duperemoverb'
s.summary = 'Deduplication of file junks of found files by deduperemove.' s.summary = 'Deduplication of file junks of found files by duperemove.'
s.files = s.files =
FileList[ %w[ FileList[ %w[
lib/**/*.rb lib/**/*.rb
@ -17,9 +17,9 @@ Gem::Specification.new do |s|
ext/*/*.c ext/*/extconf.rb ext/*/*.c ext/*/extconf.rb
]] ]]
s.bindir = %w[bin] s.bindir = %w[bin]
s.executables << 'deduperemoverb' s.executables << 'duperemoverb'
s.require_paths = %w[lib] s.require_paths = %w[lib]
s.extensions = %w[ext/deduperemoverb/extconf.rb] s.extensions = %w[ext/fideduperange/extconf.rb]
s.add_development_dependency "rake", "~> 13" s.add_development_dependency "rake", "~> 13"
s.add_dependency "ffi", '~> 1.15' s.add_dependency "ffi", '~> 1.15'

View File

@ -1,3 +0,0 @@
require "mkmf"
create_makefile "deduperemoverb"

View File

@ -0,0 +1,3 @@
require "mkmf"
create_makefile "fideduperange"

View File

@ -4,7 +4,7 @@
require 'sqlite3' require 'sqlite3'
require 'pathname' require 'pathname'
require 'ostruct' require 'ostruct'
require 'deduperemoverb/file_dedupe_range' require 'duperemoverb/file_dedupe_range'
class SQLite3::ResultSet class SQLite3::ResultSet
def each_enum def each_enum

View File

@ -15,7 +15,7 @@ module FileDedupeRange
extend FFI::Library extend FFI::Library
ffi_lib Pathname.new( __FILE__). ffi_lib Pathname.new( __FILE__).
dirname.dirname.dirname. dirname.dirname.dirname.
join( *%w[ext deduperemoverb deduperemoverb.so]). join( *%w[ext fideduperange fideduperange.so]).
expand_path. expand_path.
to_s to_s

View File

@ -1,3 +1,3 @@
class Duperemove class Duperemove
VERSION = '0.0.2' VERSION = '0.0.3'
end end