标题: [其他] 批处理如何实现共享目录只同步权限? [打印本页]
作者: juan1923 时间: 2022-5-2 15:59 标题: 批处理如何实现共享目录只同步权限?
现在有两台服务器的共享目录\\server1\abc, \\server2\abc这2个共享目录是要求实时同步,
我已经用vbs 调用bat 脚本 后台运行,实现了实时镜像同步,而且将共享目录的权限也拷贝过去了。- robocopy "\\server1\abc" "\\server2\abc" /R:3 /W:3 /MON:1 /MOT:1 /COPYALL /MIR
复制代码
问题来了,利用 copyall的参数虽然把共享目录权限带过去了,但是也把server1的本地目录权限也复制到server2了,并且把server2的本地权限冲击了,完全变server1的权限了。导致server2本地的账号无法访问.
所以我现在脚本改成- robocopy "\\server1\abc" "\\server2\abc" /R:3 /W:3 /MON:1 /MOT:1 /e
复制代码
只实时同步了文件,不同步权限。
尝试了permcopy 复制权限,这是2003的工具,我拿到2016使用一直提示network报错,
现在像各路高手请教下
1. 在同步文件的同时只同步共享目录权限不覆盖本地的权限
或者是 2.我运行我上面说的脚本,有没有方法另外同步共享目录权限而不影响本地服务器权限
作者: flashercs 时间: 2022-5-2 17:40
本帖最后由 flashercs 于 2022-5-2 17:51 编辑
- <#*,:&cls
- @echo off
- cd /d "%~dp0"
- powershell -C "Set-Location -LiteralPath ([Environment]::CurrentDirectory);. ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~f0\" -ReadCount 0 | Out-String)))"
- pause
- exit /b
- #>
- # NOTE:merge ACLs
- $srcdir = "\\server1\abc"
- $dstdir = "\\server2\abc"
- $srcacl = Get-Acl -LiteralPath $srcdir
- $dstacl = Get-Acl -LiteralPath $dstdir
- foreach ($rule in $srcacl.Access) {
- $dstacl.AddAccessRule($rule)
- }
- Set-Acl -LiteralPath $dstdir -AclObject $dstacl
- robocopy $srcdir $dstdir /R:3 /W:3 /MON:1 /MOT:1 /E
复制代码
MergeACLs.bat
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |