这似乎是网上的一个热门问题,但其他人似乎都同意只能指定完整路径的一部分以实现某种通配符。我认为我需要更具体一些,因为我有一个递归文件结构,并且不能使用 /XJ。
语境
我们通过 Windows 2008 文件服务器在所有服务器上运行夜间备份,该文件服务器运行 robocopy 脚本以通过 Samba 文件共享执行差异备份。我遇到问题的特定备份是针对 Linux 共享网络服务器的。
备份这个特定服务器的特殊之处在于它使用递归文件结构,使用符号链接。原因是服务器在 chroot jail 中运行 suPHP,并且需要递归文件结构来欺骗 suPHP 工作。
目录结构的示例如下所示:
用户的主目录: /home/websites/wwww.customersite.com/home/wwww.customersite.com/
他们的网站位于: /home/websites/www.customersite.com/home/www.customersite.com/public_html/
递归开始于: /home/websites/www.customersite.com/home/websites/
因此,当此递归开始时,在我的 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...
现在,它似乎确实像这样持续了一段时间,然后达到了某个目录深度限制,并且实际上备份了文件。但我想摆脱它,因为它会导致备份在白天大量运行,并且无疑会给服务器带来额外的负载。
...\home\websites\customer\home\websites\customer\home\websites\customer\home\customer\public_html\administrator\components\com_jce\img\
我试过的
在从基于 Windows Vista+ 的系统复制之前,我已经看到使用 robocopy 的这种递归文件结构问题。例如,备份 C:\Users 时出现此问题:
正如那里提到的,我以前能够使用/XJ来解决这个问题。但是,我猜测由于文件是从Linux系统复制的,所以递归符号链接不会作为 robocopy 的连接点出现。
到目前为止,我还没有找到使符号链接显示为连接点的方法。
当然,我在这里也看不到使用/XD的方法,因为我需要能够备份 /home/websites/ 中的所有数据,所以/ XD /home/websites/肯定会否定该文件夹的备份.
理想情况下,我想要这样的东西:
/XD /home/websites/.+/home/websites/.+
甚至只是:
/XD /home/websites/.+/home/websites/
任何帮助表示赞赏。
谢谢!
你读过这个吗:https ://serverfault.com/a/304993/171115 ?
我在我的电脑上试了一下,它成功了!在我制作一些要复制的目录之前:
好?那么我想复制除 users*\source 之外的所有内容,对吗?
也许 linux 服务器上的 rsync cron 作业将其转储到您的 robocopy 可以抓取的 tar?然后你可以简单地排除整个原始路径。
对我来说,我做了以下事情:
我有几台 Linux 服务器,我只需要 ETC 和一些备份的文件夹。我对 tar 执行 rsync,然后使用 PSCP 简单地获取 tar 文件(因为它每晚都会更改)。然后我的 PSCP 脚本删除了它在 7 天前抓取的所有内容(因为 Windows 备份抓取了“转储到”文件夹,所以从技术上讲我有异地备份的备份。
希望有所帮助。