sync seems to ignore --exclude-dir-regex

未关闭
#1,041 0 条评论 2 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
停滞
技术栈
python
领域
cli

调研方向

The traceback ends in _walk_relative_paths in b2sdk's scan/folder.py (around lines 239-258), which calls pathlib iterdir on a subdirectory that the --exclude-dir-regex should have skipped. Read that walk and check whether the exclude-dir check runs before the recursion descends. Reproduce with a tree that contains an unreadable directory matching the regex. Done when the excluded directory is skipped without being opened, and the sync command finishes without a PermissionError.

由索引模型根据 Issue 内容生成。

描述

Greetings,

While using the sync command on b2-windows version 4.1.0 on Windows 11 (x86_64), the program gives an error message when it hits a directory it cannot access, even when that directory is in --exclude-dir-regex.

Command-line (run in terminal as an administrator):

b2-windows.exe sync --skip-newer --threads 1 --destination-server-side-encryption=SSE-C --no-progress --exclude-all-symlinks --exclude-dir-regex=".*\\Users\\Temp|.*\\Default User|.*\\Users\\Default" --keep-days 60 "C:\Users" b2:bucketname/syncs/lap-24/C/Users

I receive this error

Traceback (most recent call last):
  File "b2\_internal\b2v4\__main__.py", line 13, in <module>
  File "b2\_internal\console_tool.py", line 5529, in main
  File "b2\_internal\console_tool.py", line 5402, in run_command
  File "b2\_internal\console_tool.py", line 1070, in run
  File "b2\_internal\console_tool.py", line 3165, in _run
  File "b2sdk\_internal\sync\sync.py", line 214, in sync_folders
  File "b2sdk\_internal\sync\sync.py", line 263, in _make_folder_sync_actions
  File "b2sdk\_internal\scan\scan.py", line 48, in zip_folders
  File "b2sdk\_internal\scan\folder.py", line 152, in all_files
  File "b2sdk\_internal\scan\folder.py", line 258, in _walk_relative_paths
  File "b2sdk\_internal\scan\folder.py", line 258, in _walk_relative_paths
  File "b2sdk\_internal\scan\folder.py", line 258, in _walk_relative_paths
  [Previous line repeated 1 more time]
  File "b2sdk\_internal\scan\folder.py", line 239, in _walk_relative_paths
  File "pathlib.py", line 1056, in iterdir
PermissionError: [WinError 5] Access is denied: '\\\\?\\C:\\Users\\Default\\AppData\\Local\\Application Data'
[6520] Failed to execute script '__main__' due to unhandled exception!

When testing the regex in a web-tester, it appears to be correct
image

The program shouldn't be attempting to access a subdirectory of an excluded directory. According to the command-line tool documentation:

When a directory is excluded by using --exclude-dir-regex, all of the files within it are excluded, even if they match an --include-regex pattern. This means that there is no need to look inside excluded directories, and you can exclude directories containing files for which you don’t have read permission and avoid getting errors.

Thanks 👍

主要语言
Python
星标
638
派生
138
平均合并
8 小时 27 分钟
30 天内合并 PR
8

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Backblaze/B2_Command_Line_Tool 的其他 Issue

查看 Backblaze/B2_Command_Line_Tool 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。