Rsync включает содержимое папки, но исключает родительскую папку

Rsync включает содержимое папки, но исключает родительскую папку

Я безуспешно рыскал по Интернету в поисках ответа... Я пытаюсь достичь этого результата в пункте назначения.

Media_Files
    Web
        Print

Мои исходные файлы:

Media_Files
    Assets
        Web
            Print

Как я могу исключить, удалить, переместить или отфильтровать папку Assets, но сохранить Web/Printпапки, используя rsync? Спасибо

решение1

Это нужно будет сделать в два этапа:

  1. Скопируйте все, кроме Media_Files/Assets(при условии, что в разделе есть еще что-то Media_Files).
  2. Копировать Media_Files/Assets/Web.

Первый шаг можно сделать с помощью

rsync -av --exclude=/Assets/ Media_Files/ destination

Это (подробно) скопирует Madia_Filesкаталог рекурсивно (включая разрешения и другие метаданные) в destination, создав destinationкопию Media_Files(удалив конечный символ /в исходном пути, чтобы вместо этого создать destination/Media_Files).

AssetsРасположенный непосредственно под ним каталог будет Media_Filesпроигнорирован из-за шаблона исключения /Assets/.

Второй шаг можно сделать

rysync -av Media_Files/Assets/Web destination

Отсутствие /в конце исходного пути означает, что Webвнутри будет помещено destination.

Если у вас есть другие файлы или каталоги, Media_Files/Assetsкоторые Webвам также нужно скопировать, используйте вместо этого

rsync -av Media_Files/Assets/ destination

Это скопирует все Media_Files/Assets(включая Webкаталог и его содержимое) непосредственно в destination.


Вместо этого вы можете выполнить следующие два шага:

  1. Сделатьdestinationточныйкопия Media_Files, включая Media_Files/Assets.
  2. Вручную переместите содержимое, destination/Assetsкоторое вы хотите переместить, destinationи удалите destination/Assets.

Суммируя:

rsync -av Media_Files/ destination
mv -i destination/Assets/* destination
rmdir destination/Assets

Последние две команды будут изменены для перемещения только того содержимого, destination/Assetsкоторое вы хотите сохранить (например, destination/Assets/Web), и удаления остального (здесь я предполагаю, что вы хотите переместить все видимые файлы и каталоги, и что это оставит подкаталог Assetsполностью пустым).

решение2

Для достижения результата можно использовать следующую команду

rsync -azvP Медиа_Файлы/Активы/Веб_Медиа_Файлы/

Связанный контент