На моем локальном компьютере у меня есть такая структура папок
/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, особенно если у вас больше одного или двух фильтров / включает / исключает.