RAR
Lee archivos RAR/CBR, con multivolumen, contraseñas y extracción verificada, y crea nuevos archivos RAR5 de un solo volumen.
Actualizado el
Arca lee todas las familias RAR y crea nuevos archivos RAR5 de un solo volumen. Los archivos RAR y CBR existentes nunca se modifican. RAR está activo por defecto en la CLI y la ventana de escritorio; las compilaciones normales y los paquetes creados con ellas lo incluyen:
cargo build --release# Solo la CLI:cargo build --release -p arca-cliEl adaptador arca-rar fija rars en 0.10.0, desactiva sus opciones por defecto
y habilita únicamente encryption y write; recovery y parallel siguen
desactivadas. No necesita UnRAR, RAR/WinRAR o 7-Zip instalados para funcionar. Para compilar sin RAR, usa
--no-default-features --features codecs-native; omite codecs-native para
excluir también los códecs nativos de ZIP/7z. Una compilación Rust puro con RAR
usa --no-default-features --features rar. No hay un interruptor en la interfaz.
Lectura
arca list archive.rararca list private.rar -p 'password'arca test archive.rar -p 'password'arca extract archive.rar -o extracted/ -p 'password'arca extract comic.cbr -o comic/arca list backup.part03.rararca extract backup.r01 -o backup/Omite -p si no hay cifrado. Las contraseñas en la CLI pueden quedar en el
historial o ser visibles en la lista de procesos; en equipos compartidos es
preferible el diálogo de la GUI. La GUI pide la contraseña antes de listar
cabeceras cifradas, permite reintentar contraseñas incorrectas identificables y
la conserva para el archivo abierto. Con cabeceras cifradas RAR4, una contraseña
incorrecta puede producir un error de formato: vuelve a abrir con la contraseña
correcta antes de concluir que el archivo está dañado.
Se admiten listado, comprobación, vistas previas y extracción. Los archivos sólidos se decodifican secuencialmente. Incluso una extracción parcial verifica todos los miembros antes de publicar los seleccionados. La comprobación en la GUI siempre verifica el RAR completo. El título indica que el archivo abierto es de solo lectura; no se añaden asociaciones del sistema operativo.
No se permite añadir, borrar, renombrar, mover, crear carpetas internas ni cambiar contraseñas en un RAR o CBR existente. Copiar el contenedor como archivo no modifica su contenido.
Crear archivos RAR5
arca create backup.rar documents/ notes.txtarca create photos.rar photos/ -l bestarca create plain.rar big.iso -c store # equivale a -l storeLa salida es un archivo RAR5 nuevo, de un solo volumen, no sólido y sin cifrar,
que UnRAR y 7-Zip oficiales abren. -l store|fast|normal|best elige la fuerza
del compresor RAR; -c solo admite auto o store. El diálogo Crear del
escritorio ofrece RAR junto a ZIP y 7z con los mismos niveles. Se guardan los
ficheros y directorios vacíos, se conservan las fechas de modificación y los
directorios se recorren en orden, así que la misma entrada produce siempre los
mismos bytes.
La creación rechaza, antes de leer ninguna entrada o escribir ningún fichero:
- Una contraseña u Ocultar nombres: la salida RAR nunca se cifra. Usa ZIP o 7z para eso.
-c deflate|zstd|lzma2,-jmayor que 1 (la creación RAR es secuencial), un destino.cbro cualquier otro sufijo distinto de.rar.- Un destino que ya exista, incluso como enlace roto. Arca solo crea archivos RAR nuevos y nunca reemplaza un fichero, tampoco uno que aparezca mientras se escribe. La carpeta padre del destino debe existir.
- Entradas que sean enlaces simbólicos, puntos de reanálisis o ficheros especiales (no se siguen), entradas que coincidan con el destino o su carpeta, y nombres no válidos, duplicados o que solo difieran en mayúsculas.
- Más de 100.000 miembros, nombres de más de 4096 bytes, un fichero de más de 4 GiB o más de 16 GiB en total.
El escritor prepara un fichero .arca-*.rar.part junto al destino, lo reabre
con el propio lector de Arca para listar y decodificar por completo cada
miembro y después lo publica sin sobrescribir nada. Cualquier fallo o la
cancelación no deja nada en la ruta de destino. En la CLI, Ctrl+C (SIGINT) o
SIGTERM durante una creación RAR se atiende de forma cooperativa: el recorrido o
el escritor se detienen en su siguiente comprobación, informan cancelled con
estado de salida distinto de cero y el fichero preparado se elimina. En Unix se
conserva el tratamiento heredado de SIGHUP para respetar nohup. Un SIGHUP no
ignorado, SIGKILL o un corte de corriente pueden dejar temporales
.arca-*.rar.part y .rars-spool-*, que no son archivos publicados.
No se admite en este incremento, y se rechaza en lugar de aproximarse: archivos sólidos, salida multivolumen, cifrado, registros de recuperación, filtros de datos RAR, salida RAR4, creación de CBR, y añadir, borrar, renombrar o reparar dentro de un archivo existente.
Conjuntos multivolumen
Mantén todas las partes en la misma carpeta. Puedes abrir cualquier parte de
un conjunto moderno (name.part1.rar o name.part01.rar) o antiguo
(name.rar, name.r00, name.r01). Arca localiza la primera parte y trabaja
con el conjunto completo, incluidos miembros divididos, sólidos y cifrados.
La contraseña se aplica al conjunto. Para seleccionar un volumen antiguo en
el diálogo de apertura, usa All files (including RAR volumes).
No se buscan partes en otras carpetas ni se descargan volúmenes. Los volúmenes ausentes, duplicados, desordenados o incoherentes producen un error con la ruta afectada. Deben ser archivos normales, no enlaces ni puntos de reanálisis de Windows. Un archivo independiente cuyo nombre parezca multivolumen sigue siendo independiente si sus cabeceras no declaran un conjunto. Se ignoran los archivos numerados no seleccionados fuera del rango admitido; un volumen seleccionado fuera de rango o una parte 257 necesaria siguen fallando.
RAR no tiene un identificador universal de conjunto. Se comprueban los números, indicadores y metadatos de miembros divididos disponibles. Volúmenes ajenos con miembros no divididos y metadatos idénticos no siempre se pueden distinguir; los formatos antiguos tampoco ofrecen siempre números de volumen fiables. Los conjuntos históricos sin cabecera final pueden continuar después de un miembro no dividido. Si falta su último volumen en uno de esos límites, los metadatos disponibles no permiten detectar la ausencia. Si el primer volumen tiene cabecera final, los siguientes también deben tenerla.
Seguridad y límites
La creación tiene sus propios techos (miembros, bytes de nombre, 4 GiB por
fichero, 16 GiB en total, 64 MiB de cabeceras y un libro de memoria gestionada
de 256 MiB para el escritor; consulta
arca_rar::create_limits).
Son límites del decodificador y del escritor, no un aislamiento estricto de
memoria o tiempo de CPU. Algunos filtros necesitan más memoria de la permitida y se rechazan.
La cancelación se comprueba al buscar, analizar y decodificar, y entre los pasos
de publicación.
Las vistas previas multivolumen limitan a 64 MiB el contenido seleccionado en memoria; los miembros descartados usan los límites normales de salida. El backend sigue decodificando y verificando todo el conjunto, por lo que la corrupción en otro volumen puede impedir la vista previa. En archivos independientes, la vista previa termina tras el miembro seleccionado.
La extracción decodifica primero en almacenamiento temporal privado y verifica la integridad. Una contraseña incorrecta, corrupción o fallo de decodificación deja el destino intacto. Después publica los archivos seleccionados mediante temporales en el mismo sistema de archivos y reemplazo atómico. Un fallo de E/S o cancelación durante la publicación puede dejar archivos ya verificados: no se garantiza una transacción sobre todo el árbol de destino. El espacio temporal necesario puede acercarse al límite de salida.
Se rechazan rutas absolutas, escapes de directorio, nombres de dispositivo, flujos de Windows, caracteres de control, colisiones de nombres y de archivo/carpeta. No se admiten enlaces ni archivos especiales RAR. Se rechazan enlaces y puntos de reanálisis bajo el destino; la raíz elegida se resuelve a su ubicación canónica. No extraigas en un árbol que otro proceso pueda modificar simultáneamente: las comprobaciones no aíslan carreras del sistema de archivos.
RAR5 exige una cabecera final completa. Si el formato no guarda CRC32, esa columna queda vacía, pero se ejecutan sus comprobaciones nativas. La garantía de integridad depende de las sumas y autenticadores presentes en el archivo.
Exclusiones y notas sobre dependencias
- No hay modificación de archivos existentes, recuperación/reparación ni asociaciones automáticas. Los métodos o metadatos no admitidos devuelven un error. La creación se limita al perfil RAR5 de un solo volumen descrito arriba.
- Los fixtures independientes, comparaciones con UnRAR y fuzzing acotado amplían la cobertura del lector; el harness de creación con semilla compara los archivos que Arca escribe con UnRAR y 7-Zip oficiales. No demuestran compatibilidad exhaustiva. Consulta el registro de validación del lector y el registro de validación de la creación.
- La revisión de procedencia recoge la declaración Apache-2.0 del autor y dudas sobre fuentes e investigación. No demostró una infracción ni una incompatibilidad de licencia que impida distribuir el lector. Esas observaciones no son una garantía legal ni un motivo para etiquetarlo como experimental. Los textos de licencia y avisos publicados para las dependencias del adaptador acompañan los paquetes. Activar el escritor no añadió ninguna dependencia que la rama del lector no tuviera ya, así que el paquete de avisos no cambia.
Comprobaciones reproducibles:
python3 arca-rar/tests/check-features.pycargo test --workspacecargo test --workspace --no-default-features --features codecs-nativecargo clippy --workspace --all-targets -- -D warningscargo build --release -p arca-clipython3 arca-rar/tests/create-stress.py # smoke acotado; omite las herramientas ausentesUNRAR=/ruta/a/unrar SEVENZIP=/ruta/a/7zz python3 arca-rar/tests/create-stress.py --stress --require-toolsConsulta el registro de decisiones y la procedencia de los fixtures.