Я хочу переместить некоторое подмножество файлов из dirA в dirB (скажем, файлы с именем «blah» в имени файла), но я хочу, чтобы все вложенные каталоги были одинаковыми в новом месте. Как я могу это сделать?
directory-structure
file-copy
cstack
источник
источник
Ответы:
Магия
rsync
правил фильтрации:Обратитесь к
rsync
странице справочника за подробной информацией о правилах фильтрации, но вот сокращенная версия для этой конкретной потребности.--filter="+ */"
означает «включить все, что является каталогом»--filter="-! *blah*
означает «исключить все, что не включает бла в имени файла»источник
Если вам нужно скопировать эти файлы, cp сделает:
Опция
--parents
сохраняет подкаталоги - она создает полный путь к каталогу для места назначения.источник
Это сработало для меня:
rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" uid@555.55.555.55:/source/directory/ /destination/directory/
В
-e
коммутаторе определяетrsync
протокол передачи с портом в качестве-p 22
. Кроме того, конечные/
слэши важны, чтобы программа знала, что имеет дело с каталогами.Спасибо @pdo за дополнительные часы в мой рабочий день!
источник