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

Как выборочно использовать папки rsync с сохранением древовидной структуры?

На моем локальном компьютере у меня есть такая структура папок

/a/b
/a/c
/d/e
/d/f

Я хочу rsync /a/c и /d/f на удаленный сервер, чтобы после этого у него была структура папок, например

/a/c
/d/f

Нужно ли мне дважды вызывать rsync или есть возможность автоматически сохранить структуру папок?

Хороший вопрос. Вам нужно использовать -R или --relative флаг. На странице руководства:

-R, --relative Использовать относительные пути. Это означает, что на сервер отправляются полные имена путей, указанные в командной строке, а не только последние части имен файлов. Это особенно полезно, если вы хотите отправить несколько разных каталогов одновременно. Например, если вы использовали эту команду: rsync -av /foo/bar/baz.c remote: / tmp / ... это создаст файл с именем baz.c в / tmp / на удаленном компьютере. Если вместо этого вы использовали rsync -avR /foo/bar/baz.c remote: / tmp /, тогда на удаленном компьютере был бы создан файл с именем /tmp/foo/bar/baz.c, сохраняя его полный путь. Эти дополнительные элементы пути называются «подразумеваемыми каталогами» (то есть каталогами «foo» и «foo / bar» в приведенном выше примере).

Чтобы сохранить структуру каталогов, как указано выше, используйте параметр -r или --recursive (рекурсивный переход в каталоги).

Тогда вам решать, как сделать выбор. Используйте параметры -f, -F, --filter, --include или --exclude. При необходимости вы также можете использовать --inclide-from-file или --exclude-from-file, особенно если у вас больше одного или двух фильтров / включает / исключает.