具有不同目录结构的 RSYNC

具有不同目录结构的 RSYNC

我正在尝试使用 RSYNC 完成下面的操作,但不太明白语法。我的源包含每个用户的一个文件夹,然后是 Logs 下的一些子文件夹。我需要使用同步捕获数字文件夹下的所有内容。

SOURCE DIRECTORY STRUCTURE:  
/STORAGE/user1/db/Logs/151251/  
/STORAGE/user1/db/Logs/156123/  
/STORAGE/user1/db/Logs/117722/  
/STORAGE/user2/db/Logs/178438/  
/STORAGE/user2/db/Logs/161265/  

PREFERRED DESTINATION DIRECTORY STRUCTURE  
/LOGS/user1/151251/  
/LOGS/user1/156123/  
/LOGS/user1/117722/  
/LOGS/user2/178438/  
/LOGS/user2/161265

我尝试过的命令是:

rsync -azvr [email protected]:/STORAGE/*/db/Logs/*/ /LOGS/

这成功复制了所有数字子文件夹中的所有文件,但我需要创建上面的目录结构(/LOGS/user/uniqueid/individual文件)。

有办法实现这个吗?

答案1

您可以使用 rsync 过滤器来指定要传输的子路径:

rsync -asvr --include '*/' --include 'Logs/***' --exclude '*' [email protected]:/STORAGE/ /LOGS/

这将在目标上创建所有源目录(但不包含任何文件)。若要避免这种情况,您需要明确包含所有父目录:

rsync -asvr --include '/STORAGE/' --include '/STORAGE/*/' --include '/STORAGE/*/db/' --include '/STORAGE/*/db/Logs/***' --exclude '*' [email protected]:/STORAGE/ /LOGS/

编辑:要排除具有特定扩展名的文件,请--exclude在前面添加一个模式:

rsync -asvr --exclude '*.bdb' --include ...

相关内容