这似乎是网络上的一个热门问题,但其他人似乎都同意只指定完整路径的一部分以实现某种通配符。我认为我需要更具体一点,因为我有一个递归文件结构,不能使用 /XJ。
语境
我们通过 Windows 2008 文件服务器对所有服务器进行夜间备份,该服务器运行 robocopy 脚本以通过 Samba 文件共享执行差异备份。我遇到问题的特定备份是针对 Linux 共享网络服务器的。
备份此特定服务器的奇怪之处在于它使用递归文件结构,使用符号链接。原因是服务器在 chroot jail 中运行 suPHP,需要使用递归文件结构才能诱使 suPHP 运行。
目录结构的示例如下:
用户的主目录:/主页/网站/wwww.customersite.com/主页/wwww.customersite.com/
他们的网站是:/主页/网站/www.customersite.com/主页/www.customersite.com/public_html/
递归开始于:/主页/网站/www.customersite.com/主页/网站/
因此,当这个递归开始时,在我的 robocopy 日志中我看到如下条目:
\\10.230.0.25\backup-share\home\websites\customer\home\websites\customer\home\websites\customer\home\websites\customer\home\websites\customer\home\websites\customer...
现在,它确实会这样持续一段时间,然后达到某个目录深度限制,并真正备份文件。但我想摆脱这种情况,因为它导致备份相当长时间运行到白天,并且无疑会给服务器带来额外的负载。
...\主页\网站\客户\主页\网站\客户\主页\网站\客户\主页\客户\public_html\administrator\components\com_jce\img\
我尝试过的方法
我在从基于 Windows Vista+ 的系统复制之前使用 robocopy 时发现过这种递归文件结构问题。例如,备份 C:\Users 时出现此问题:
正如那里提到的,我以前能够使用/XJ来解决这个问题。不过,我猜想,由于文件是从Linux系统,递归符号链接不会作为 robocopy 的连接点出现。
到目前为止,我还没有找到让符号链接显示为连接点的方法。
当然,我看不出有什么办法/XD这里也没有,因为我需要能够备份所有数据/主页/网站/这样做/XD /主页/网站/肯定会否定该文件夹的备份。
理想情况下,我想要类似这样的东西:
/XD /主页/网站/.+/主页/网站/.+
甚至只是:
/XD /主页/网站/.+/主页/网站/
任何帮助均感激不尽。
谢谢!
答案1
也许 Linux 服务器上有一个 rsync cron 作业,将其转储到 robocopy 可以抓取的 tar 中?然后,您可以简单地排除整个原始路径。
对我来说,我会做以下事情:
我有几个 Linux 服务器,我只需要备份 ETC 和几个文件夹。我对 tar 执行 rsync,然后使用 PSCP 简单地抓取 tar 文件(因为它每晚都会更改)。然后我的 PSCP 脚本会删除它抓取的 7 天前的内容(因为 Windows 备份会抓取“转储到”文件夹,所以从技术上讲,我有异地备份的备份。
希望有所帮助。
答案2
你读过这个吗:https://serverfault.com/a/304993/171115?
我在我的电脑上尝试了这个并且成功了!在我复制一些目录之前:
cd c:\temp
mkdir source
cd source
for %i in (user1 user2 user3) do (mkdir %i\source %i\others)
可以吗?那么我想复制除 users*\source 之外的所有内容,对吗?
cd c:\temp
robocopy source dest /mir /r:1 /w:1 /xd source