How Unrar Handles Directory and File Name Conflicts
When unrar attempts to extract a directory that shares
the exact name and path of an existing local file, a filesystem
collision occurs. Because operating systems do not permit a file and a
directory to share the identical path, unrar cannot proceed
normally. In this scenario, the utility triggers a write error, halts
the creation of the directory, fails to extract any nested contents
within that folder, and exits with a non-zero status code unless
specific override flags or user actions resolve the conflict.
The Underlying Conflict
Modern operating systems (including Linux, macOS, and Windows) treat
both files and directories as distinct directory entries under the same
namespace. A system call to create a directory (such as
mkdir) will fail immediately if a regular file already
occupies that exact pathname.
Default (Interactive) Behavior
If you run unrar in default interactive mode:
- Creation Failure:
unrarattempts to create the path and receives an error from the operating system (e.g.,EEXISTor "File exists"). - Error Message: The console outputs a failure
message, typically reading:
Cannot create <path_name> File already exists - Interactive Prompt: In some builds,
unrarprompts you with overwrite or rename options (e.g.,[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit). However, choosing standard overwrite options often fails because overwriting a regular file with a folder structure requires deleting the local file first rather than simply writing over its contents.
Non-Interactive and Automated Behavior
When unrar is executed via scripts or with
non-interactive flags (such as -inul or running in a
headless environment):
- Directory Skipped: The conflicting directory is skipped entirely.
- Child Files Dropped: Any files or subdirectories
located inside the archived directory cannot be extracted. Because their
parent directory does not exist,
unraroutputs subsequent "Cannot create file" errors for every nested item. - Exit Status: The process terminates with a non-zero
exit code (typically code 1 for warnings or code 7/8 for file creation
errors, depending on the
unrardistribution).
Conflict Resolution
To bypass this conflict during extraction, choose one of the following approaches:
- Remove or Rename the Local File: Manually delete or
rename the conflicting file in the destination path prior to extraction
so
unrarcan create the folder cleanly. - Use Auto-Rename (
-or): Runningunrar x -or archive.rarinstructsunrarto automatically rename extracted items with unique suffixes if a conflict exists. - Force Overwrite (
-o+): If using modern RAR builds,-o+attempts to remove existing conflicting items to make room for the new structure, though manually clearing the path remains the most reliable solution.