Итак, я пытаюсь написать несколько небольших скриптов, которые позволяют мне управлять своей библиотекой iTunes, к которой у меня есть клоны на нескольких компьютерах OS X.Работа с пробелами в аргументах пути rsync
Основная идея заключается в том, что у меня есть NAS, где хранится копия библиотеки, которая используется как промежуточная «главная копия», поскольку машины, на которых хранятся фактически использованные копии, недоступны все время. Если я хочу обновить свою старую копию на машине B с более новой версией на машине A, я бы затем обновил копию NAS на основе текущего состояния машины, а затем обновил машину B из обновленной копии NAS, возможно, в более позднее время.
Файлы сценариев расположены на NAS в той же папке, в которой также находится каталог iTunes. Поскольку я монтирую NAS в качестве тома через AFP, я просто открываю окно Finder с каталогом, содержащим скрипты, и перетаскиваю скрипт, который я хочу использовать в окне терминала, для удобства выполнения.
Это моя попытка на «обновление NAS из локальной копии» Сценарий:
rsync -avz --compress-level 1 --exclude 'Mobile Applications/*.ipa' --delete --delay-updates -n "$(echo $HOME | sed 's/ /\\ /g')/Music/iTunes" "$(dirname $0 | sed 's/ /\\ /g')"
(-n
вариант, конечно, только для тестирования скрипта)
Так будет Пробелы в пути я поставьте rsync
, я уже понял, что мне нужно как-то избежать этого. Я также знаю, что стандартный способ сделать это в OS X состоит в том, чтобы добавить все пробелы с обратной косой чертой, по крайней мере, при ручной настройке путей в терминале. Но код выше все еще не будет работать. rsync
жалуется, что он не может быть изменен в каталог, который я поставил, хотя путь, который он выплескивает в сообщении об ошибке, кажется совершенно прекрасным и может быть cd
'd, если вы удалите двойной кавычки вокруг него первый:
[...]
building file list ... rsync: change_dir "/Volumes/Macintosh\ HD/Users/Julian/Music" failed: No such file or directory (2)
done
[...]
Если удалить окружающие двойные кавычки в самом сценарии, rsync
, кажется, не чтить спасаясь обратной косой черты на всех и по-прежнему рассматривать пространство следующей обратной косой черты в качестве разделителей пути:
[...]
building file list ... rsync: link_stat "/Volumes/Macintosh\" failed: No such file or directory (2)
rsync: change_dir "/Volumes/Macintosh HD/Users/Julian/HD/Users/Julian/Music" failed: No such file or directory (2)
done
[...]
И нет, я не могу обойти проблему путем сокращения /Volumes/Macintosh\ HD/Users/Julian/Music
до /Users/Julian/Music
, поскольку этот аппарат имеет несколько жестких дисков, а /
- это не тот же диск/раздел, что и /Volumes/Macintosh\ HD
. Поэтому мне нужно найти решение для этой конкретной проблемы.
Я серьезно потерял сейчас.
Может ли кто-нибудь объяснить мне, что мне нужно изменить, чтобы rsync
правильно распознал пути?