我试图用RSYNC来完成下面的内容,但不能完全弄清楚语法。 我的源文件包含每个用户的文件夹,然后是日志下的一些子文件夹。 我需要使用同步function捕获数字文件夹下的所有内容。
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/
这成功地复制了所有数字子文件夹中的所有文件,但是我需要创build上面的目录结构( /LOGS/user/uniqueid/individual文件)。
有没有办法做到这一点?
您可以使用rsyncfilter来指定要传输的子path:
rsync -asvr --include '*/' --include 'Logs/***' --exclude '*' [email protected]:/STORAGE/ /LOGS/
这将创build目标上的所有源目录(但不包含任何文件)。 要做到这一点,你需要明确包含所有的父目录:
rsync -asvr --include '/STORAGE/' --include '/STORAGE/*/' --include '/STORAGE/*/db/' --include '/STORAGE/*/db/Logs/***' --exclude '*' [email protected]:/STORAGE/ /LOGS/
编辑:要排除具有特定扩展名的文件,请在前面添加--exclude模式:
rsync -asvr --exclude '*.bdb' --include ...