我有一个多 VM Windows (Server 2019) 解决方案,托管在数据中心,其中包含需要 Redis 缓存的服务。出于安全考虑,不允许使用 Windows 版本的 Redis。因此,我在 RHEL 7 服务器上安装了 Redis。
我们的一台 Windows 机器上有一个网络共享,其中包含解决方案的各种配置文件以及备份。我在这个共享中配置了 Redis,使其每 20 分钟(或多次更改)写出一次 dump.rdb 文件,使用 CIFS 挂载共享以及服务用户 AD 域凭据(在共享服务器上具有管理权限)。
这个设置已经完美运行了大约 2 个月。昨晚午夜左右,Redis 备份开始失败。dump.rdb 文件的权限被拒绝。经调查,似乎无法查看 Windows 中的 ACL 权限 ( You Must Have Read Permissions to view the Properties of This Object
),并且所有操作(重命名、复制、移动、删除等)都因访问被拒绝而失败 - 即使是从提升的命令提示符执行。在 Linux 上,ls -l
显示所有用户的完整 rwx 权限,但任何访问该文件的尝试都会返回错误,指出不存在这样的文件。
所以我们无法对这个文件做任何事情。我们无法摆脱它。目前,我们已经告诉 Redis 将其转储到另一个文件夹,但谁知道该文件是否/何时也会获得损坏的权限。
尝试在 Google 上搜索该问题,但没有找到与我们特定问题相关的任何内容。我们可以做些什么来删除转储文件?有什么可以覆盖权限的吗?此外,CIFS 是否存在任何已知问题会导致此类错误?也许我配置不正确。这是我在 fstab 文件中的 cifs 挂载条目:
//<ServerIP>/DataShare /mnt/DataShare cifs _netdev,credentials=/root/.credfile,dir_mode=0777,file_mode=0777 0 0
.cred文件如下:
username=svc_user
password=<password>
domain=mydomain
答案1
如果你现在想删除原始文件,我可以想到以下几件事
该文件是否设置了只读标志?
获取子项 -ReadOnly
您可以使用 psexec 和 runas 在文件服务器上以 SYSTEM 用户身份运行 CMD 提示符,然后使用它来删除文件吗?
psexec -s -i 命令
- 创建一个新的空目录。使用 Robocopy /MIR 和 /PURGE 选项将新的空目录镜像到目标目录(您的 redis 文件所在的目录)。过去,当我无法完全控制用户共享等时,曾成功使用过此方法,如果您在同一目录中还有其他您关心的内容,则显然不要使用它。