我正在尝试使用 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 ...