Findrepe
findrepe es un programa para escanear directorios en busca de ficheros duplicados, con opciones para listarlos y borrarlos. Primero compara los tamaños de los ficheros y posteriormente las firmas MD5 y SHA1 (ambos a la vez con el fin de evitar colisiones que de falsos positivos), no se realiza verificación byte-a-byte.
findrepe está escrito en Java y liberado bajo la licencia GPLv3.
Historia[editar]
La primera versión de findrepe fue creada en C/C++ y publicada el 5 de julio de 2004, su única opción era '-d', fue abandonada desde entonces y lo único que perdura es la idéa de comparar tamaños y firmas MD5. Solo existió para windows y funciona correctamente en GNU/Linux+Wine. Se publicó sin licencia, como programa privado (no confundir con privativo). Fue desarrollado con C++Builder sobre windows.
La revisión actual de findrepe fue creada en Java y su primera versión se publicó el 15 de marzo de 2009. Su desarrollo se realiza con Netbeans sobre GNU/Linux (ubuntu 9.10) y su funcionamiento verificado sobre OpenSolaris, Windows XP y Windows 7 y Mac OS X.
Objetivos[editar]
El objetivo de findrepe es encontrar rápidamente archivos duplicados y está optimizado para usar la opción de borrado, creando los primeros resultados lo más pronto posible para seguir trabajando en segundo plano mientras el usuario decide si borrar alguno de los duplicados. Otro de los objetivos es la "suavidad", es decir, no bloquear el resto de programas que se ejecutan en la máquina, a fin de permitir al usuario trabajar mientras se genera algún resultado.
Internacionalización[editar]
A pesar de que el autor del programa es Español, actualmente solo existe versión en inglés, aunque está prevista su internacionalización en próximas versiones.
Opciones[editar]
-v, --verbose increase verbosity --verbose-logger format messages as a logger -L, --license display software license -d, --delete prompt user for files to delete --delete-auto=path smart auto-selection of files for deletion -n, --noempty exclude zero-length files -s, --symlinks follow symlinks -m, --min-size=size exclude files shorter than size[bkmgt] -M, --max-size=size exclude files larger than size[bkmgt] -w --min-wasted=size minimun wasted size[bkmgt] copies, size*(n-1) -S --size show size[bkmgt] of files --install install a launcher --install-java[=path] install a launcher using 'java' command --install-home[=path] install a launcher using 'java.home' property --install-posix posix flavor for install options when unknown --install-version adds version to launcher name --unique list only unique files (--count=1) --count=N list files repeated N times -c --min-count=N files repeated at least N times -C --max-count=N files repeated no more than N times --noautoexclude don't autoexclude some paths (/dev, /proc, ...) --exclude=path don't follow path --exclude-dir=pattern don't follow directories named name --exclude-file=pattern ignore files named name --exclude-rc ignore revision control directories --exclude-svn ignore subversion (.svn) --exclude-cvs ignore cvs (CVS) --exclude-hg ignore mercurial (.hg and .hgignore) -f --focus=path focus on files in path --focus-dir=pattern focus on directories matching pattern --focus-file=pattern focus on files matching pattern --dir=pattern only directories matching pattern --file=pattern only files matching pattern -z --zip recurse into zip files (zip, jar, ...)(ALPHA) -Z --zip-only exclude files not added by option --zip -e --regex uses java regular expresions --wildcard uses wildcards '*', '?' and '[]' (default) -j --jobs=N limits thread use to N (0-1024, developers only) --bug show filenames with bugs --bug-fix try to fix filenames with bugs --version print version number --examples print some useful examples (-h) --help show this help (-h works with no other options)
-v, --verbose increase verbosity
modo parlanchín, aumenta el número de mensajes que se muestran indicando lo que se está haciendo, un nivel por cada uso (ej: -vvv)
--verbose-logger format messages as a logger
muestra fecha, hora y la pila de llamadas en los mensajes como un logger de java cualquiera.
-L, --license display software license
muestra la licencia que actualmente es GPLv3 o superior
-d, --delete prompt user for files to delete
permite borrar los resultados de forma interactiva, siendo conservador en su funcionamiento
--delete-auto=path smart auto-selection of files for deletion
Los ficheros son marcados automáticamente para borrar (a falta de confirmación) cuando están dentro de la ruta indicada y existen copias fuera no marcadas. Pueden indicarse rutas que contengan a otras, marcándose entonces aquellos ficheros con más aciertos.
-n, --noempty exclude zero-length files
excluye los archivos vacíos de la búsqueda
-s, --symlinks follow symlinks
permite seguir los enlaces simbólicos en la búsqueda.
-m, --min-size=size exclude files shorter than size[bkmgt]
excluye ficheros que no alcancen un tamaño mínimo
-M, --max-size=size exclude files larger than size[bkmgt]
excluye ficheros que superen un tamaño máximo
-w --min-wasted=size minimum wasted size[bkmgt] copies, size*(n-1)
excluye resultados que no estén malgastando un tamaño mínimo equivalente al tamaño total menos una de las copias.
-S --size show size[bkmgt] of files
muestra el tamaño redondeado de cada fichero usando unidades de magnitud para facilitar su lectura.
--install install a launcher
instala un lanzador usando el comando java
--install-java[=path] install a launcher using 'java' command
instala un lanzador usando el comando java permitiendo indicar una ruta absoluta
--install-home[=path] install a launcher using 'java.home' property
instala un lanzador usando el java permitiendo indicar una ruta absoluta del directorio home de java
--install-posix posix flavor for install options when unknown
instala en sistemas posix no soportados
--install-version adds version to launcher name
instala un lanzador añadiendo la versión al nombre lo que permite tener varias versiones instaladas.
--unique list only unique files (--count=1)
muestra solo resultado no duplicados
--count=N list files repeated N times
excluye resultados que no estén duplicados un número exacto de veces
-c --min-count=N files repeated at least N times
excluye resultados que no estén duplicados un número mínimo de veces
-C --max-count=N files repeated no more than N times
excluye resultados que estén duplicados más de un número máximo de veces
--noautoexclude don't autoexclude some paths (/dev, /proc, ...)
no realiza la autoexclusión de determinadas rutas.
--exclude=path don't follow path
excluye determinadas rutas de la búsqueda
--exclude-dir=pattern don't follow directories named name
excluye el contenido de los directorios con un nombre determinado
--exclude-file=pattern ignore files named name
excluye el contenido de los ficheros con un nombre determinado
--exclude-rc ignore revision control directories
excluye el contenido de los directorios de control de versiones, conocidos
--exclude-svn ignore subversion (.svn)
excluye el contenido de los directorios .svn (subversion)
--exclude-cvs ignore cvs (CVS)
excluye el contenido de los directorios CVS (cvs)
--exclude-hg ignore mercurial (.hg and .hgignore)
excluye el contenido de los directorios y ficheros de control de mercurial
-f --focus=path focus on files in path
indica una ruta de interés, hace que se excluyan resultados en los que al menos una de las copias no está en alguna de las rutas indicadas.
--focus-dir=pattern focus on directories matching pattern
indica un nombre de directorio de interés, hace que se excluyan resultados en los que al menos una de las copias no está contenida en algún nivel en un directorio de los indicados.
--focus-file=pattern focus on files matching pattern
indica un nombre de fichero de interés, hace que se excluyan resultados en los que al menos una de las copias no cumple uno de los criterios indicados.
--dir=pattern only directories matching pattern
indica un nombre de directorio obligatorio, ignora los ficheros que no están contenidos en algún nivel en un directorio de los indicados.
--file=pattern only files matching pattern
indica un nombre de fichero obligatorio, ignora los ficheros que no cumplen algún criterio de los indicados.
-z --zip recurse into zip files (zip, jar, ...)(ALPHA)
busca dentro de los ficheros zip y jar de forma recursiva (y se irán añadiendo tgz y otros en futuras versiones).
-Z --zip-only exclude files not added by option --zip
excluye los ficheros que no se buscarían sin la opción --zip
-e --regex uses java regular expresions
establece la expresiones regulares (de java) como formato para los patrones
--wildcard uses wildcards '*', '?' and '[]' (default)
establece los comodines como formato para los patrones, es la opción por defecto
-j --jobs=N limits thread use to N (0-1024, developers only)
establece el límite de hilos (threads) que pueden realizar la tarea, pueden indicarse entre 0 y 1024. 0 indica que se realice de forma secuencial, esto puede ser un problema cuando el número de ficheros es demasiado grande. Por defecto el número de hilos máximo es calculado según el número de núcleos o procesadores disponibles según la fórmula (N*2+N+N/2).
--bug show filenames with bugs
muestra ficheros con problemas para ser manejados debido a un bug de java al tratar nombres de fichero no-unicode. No afecta a usuarios de Windows.
--bug-fix try to fix filenames with bugs
permite corregir los nombre de ficheros que se muestran con la opción --bug. No afecta (ni funcionará) a usuarios de Windows.
--version print version number
muestra la versión
--examples print some useful examples
muestra algunos ejemplos de uso
(-h) --help show this help (-h works with no other options)
muestra la ayuda
Programas similares[editar]
Otros programas que pueden encontrar duplicados y funciona bajo *nix:
- fdupes fdupes
- duff
- dupmerge - funciona en varias plataformas (Win32/64 with Cygwin, *nix, Linux etc.)
- fdf - Basado en Perl/c y funciona en la mayoría de plataformas (Win32, *nix y probablemente otras). Usa MD5, SHA1 y otros algoritmos de suma de control.
- freedup - POSIX C compliant y funciona en varias plataformas (Windows with Cygwin, Linux, AIX, etc)
- freedups - perl script
- fslint - tiene interfaz de línea de comandos y GUI.
- liten - Herramienta de línea de comandos de desduplicación en Python puro, y biblioteca, usando sumas de control md5 y un nuevo algoritmo de comparación de bytes. (Linux, Mac OS X, *nix, Windows)
- rdfind
- fdupe - perl script
- ua - Herramienta de línea de comandos Unix/Linux, diseñado para trabajar con find (y similares).