Назад | Перейти на главную страницу

RSYNC с разными структурами каталогов

Я пытаюсь выполнить следующее с помощью RSYNC, но не могу понять синтаксис. Мой источник содержит папку для каждого пользователя, а затем несколько подпапок в разделе «Журналы». Мне нужно захватить все, что находится в числовой папке с синхронизацией.

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 user@server.com:/STORAGE/*/db/Logs/*/ /LOGS/

Это позволяет скопировать все файлы из всех числовых подпапок, но мне нужно создать структуру каталогов, указанную выше (/LOGS/user/uniqueid/individual файлы).

Есть ли способ добиться этого?

Вы можете использовать фильтры rsync, чтобы указать, какие подпути вы хотите передать:

rsync -asvr --include '*/' --include 'Logs/***' --exclude '*' user@server.com:/STORAGE/ /LOGS/

Это создаст все исходные каталоги в месте назначения (но не содержащие никаких файлов). Чтобы этого не делать, вам нужно явно включить все родительские каталоги:

rsync -asvr --include '/STORAGE/' --include '/STORAGE/*/' --include '/STORAGE/*/db/' --include '/STORAGE/*/db/Logs/***' --exclude '*' user@server.com:/STORAGE/ /LOGS/

Редактировать: Чтобы исключить файлы с определенным расширением, добавьте --exclude узор спереди:

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