Robocopy 在递归文件结构中排除目录

Robocopy 在递归文件结构中排除目录

这似乎是网络上的一个热门问题,但其他人似乎都同意只指定完整路径的一部分以实现某种通配符。我认为我需要更具体一点,因为我有一个递归文件结构,不能使用 /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 时出现此问题:

https://superuser.com/questions/478882/delete-recursive-directory-created-by-robocopy-when-the-file-name-is-too-long

正如那里提到的,我以前能够使用/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

相关内容