diff --git a/bin/vcmp b/bin/vcmp index b130859..c40e6ec 100755 --- a/bin/vcmp +++ b/bin/vcmp @@ -202,9 +202,21 @@ def process_single_file( return False else: # File successfully converted to av1, move to destination - # Use shutil move because of inter-fs issues target_path.parent.mkdir(parents=True, exist_ok=True) - shutil.move(str(temp_path), str(target_path)) + try: + shutil.move(str(temp_path), str(target_path)) + except (PermissionError, OSError): + try: + logging.warning(f"Failed to move file with metadata, falling back to copy") + shutil.copy(str(temp_path), str(target_path)) + temp_path.unlink() + except Exception as e: + logging.error(f"Failed to copy file: {e}") + if temp_path.exists(): + temp_path.unlink() + release_file_lock(filepath) + return False + logging.info(f"Successfully compressed {filepath}") if remove_source: logging.info(f"Removing source file {filepath}")