Saltar al contenido

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:

Terminal
cargo build --release# Solo la CLI:cargo build --release -p arca-cli

El 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

Terminal
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

Terminal
arca create backup.rar documents/ notes.txtarca create photos.rar photos/ -l bestarca create plain.rar big.iso -c store      # equivale a -l store

La 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, -j mayor que 1 (la creación RAR es secuencial), un destino .cbr o 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

RecursoLímite
Volúmenes por conjunto256
Entradas de carpeta inspeccionadas al buscar volúmenes100.000
Cabeceras en todo el conjunto100.000
Bytes de cabeceras en todo el conjunto64 MiB
Diccionario RAR5256 MiB
Espacio de trabajo del decodificador512 MiB
Decodificación de filtros RAR5 en memoria64 MiB
Salida por miembro4 GiB
Salida total, incluidos miembros no seleccionados16 GiB
Vista previa en memoria64 MiB

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:

Terminal
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-tools

Consulta el registro de decisiones y la procedencia de los fixtures.