Я пытаюсь выполнить следующее с помощью 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 ...