Рейтинг:2

Использование подстановочных знаков в «источниках» для команды `rsync`

флаг cn

Я пытаюсь сделать резервную копию некоторых файлов на другом диске, используя rsync.

В качестве тестового примера я пробую следующую команду:

rsync -Rav --delete --stats /home/my_user/bin* "$dest"

Эта команда скопирует файлы и каталоги (с их содержимым), присутствующие в моем $ГЛАВНАЯ каталог и имеющие такие имена, как ~/бен, ~/бинб, ~/bin1, ~/bin2и т.д. до места назначения.

Однако, когда я удаляю любой из файлов или каталогов с именем ~/bin1 или же ~/bin2 например, они не удаляются и в месте назначения. Единственное, что работает, это когда в каталоге есть файл, скажем ~/bin2/файл1 и этот файл удаляется, то этот файл также удаляется в месте назначения (но не в том случае, когда каталог ~/bin2/ вообще удаляется).

Очевидно, эта проблема создается расширением оболочки. /дом/мой_пользователь/бин* ко всем именам файлов и каталогов, начинающимся с мусорное ведро в моем $ГЛАВНАЯ каталог в то время rsync команда выполняется. Итак, я попытался процитировать источник, например "/дом/мой_пользователь/бин*", но в этом случае я получаю сообщение об ошибке:

rsync: [sender] link_stat "/home/my_user/bin*" не удалось: нет такого файла или каталога (2)

Какие параметры необходимы, поэтому я могу использовать подстановочные знаки для источника(ов), и у меня будет точная копия исходного файла и структуры каталогов, а также в месте назначения?

Примечание: rsync версии 3.2.3 протокол версии 31

Artur Meinild avatar
флаг vn
Вы пробовали `--delete-after` вместо `--delete`?
FedKad avatar
флаг cn
@ArturMeinild Конечный результат не меняется.
pLumo avatar
флаг in
Я думаю, вам следует использовать другую структуру, в которой у вас есть все только в одном родителе, `~/bin/1` `~/bin/2` ...
Artur Meinild avatar
флаг vn
Вам необходимо принять во внимание совет pLumo, если только вы не хотите найти способ получить список каталогов на целевом хосте для включения в команду в качестве дополнительных источников.
Рейтинг:5
флаг in

Ты можешь использовать --включать / --исключать нравиться:

rsync -Rav --удалить \
  --include="/home/my_user/bin*" \
  --exclude="/home/мой_пользователь/*" \
/home/my_user/ "$ назначения"

Но я думаю, что было бы проще иметь другую структуру, в которой вы можете синхронизировать только один родительский каталог.

FedKad avatar
флаг cn
Спасибо. В моем случае параметр `--include` должен выглядеть так: `--include="/home/my_user/bin*"` (без косой черты в конце).
pLumo avatar
флаг in
ах да, потому что вам также нужны файлы, начинающиеся с `bin`, исправлено

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.