Используйте переменную для исключения нескольких каталогов с помощью rsync

Для пользователей i3wm, помимо редактирования ~/.config/mimeapps.listи ~/.i3/config, также необходимо изменить $BROWSERс ~/.profile, установить его на /usr/bin/chromium, чтобы предотвратить открытие сеансов браузера, выходящих из терминала неправильный браузер.

3
23.03.2020, 20:49
1 ответ

Я пробовал то же самое. И найти проблему сбивающей с толку.

Лучшее, что я мог сделать, это (с помощью/bin/bash)превратить список, разделенный запятыми, в список отдельных--exclude:

INCLUDE="/.vim*,/.git*,/.ssh,.bash_aliases,.bashrc"
EPATHS=("/VirtualBox_VMs/*/Snapshots" "/snap" "/Downloads" "/.*")     

for path in "${EPATHS[@]}"; do
   EXCLUDE="$EXCLUDE --exclude=$path"
done

rsync -avzhP --delete ${SOURCE_DIRS} \                                                 
    --include=${INCLUDE} \                                                                          
    $EXCLUDE             \                                  
    ${MNTPNT} ${DEST_DIR}

Это неполное и неэлегантное решение, но оно работает.

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

EXCLUDE="$EXCLUDE --exclude=\"$path\""

bash, казалось, добавило больше одинарных -кавычек.

Как отмечалось ранее, set -xбыл здесь моим другом.

0
28.04.2021, 23:19

Теги

Похожие вопросы