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

Множественные пробелы в папках и файлах для резервного копирования rsync через / bin / bash / bin / sh

Требуется разовая резервная копия двух старых грязных машин с Windows XP из-за разделения компании. Используя минимальную установку CentOS 6 x64, я смонтировал некоторые жесткие диски MS Windows NTFS, установленные локально через ntfs3g и через локальную сеть через smb. Мне нужно самостоятельно задокументировать то, что зарезервировано, и я подумал, что нет лучшего способа, чем писать сценарии с помощью rsync.

Проблема в том, что почти все папки SOURCE имеют пробелы в своих именах. На странице руководства для rsync, похоже, указано, что он поддерживает только несколько источников файлы, а не несколько источников папки. Поэтому я подумал «достаточно просто», создать список и передать каждую исходную папку по одному в rsync.

СЦЕНАРИЙ:


SOURCEWITHSPACES=( "${PREFIX}/'Documents\ and\ Settings'/.  ${PREFIX}/'electronic\ claims'/.  ${PREFIX}/'billing\ statements'/." )
for P in ${SOURCEWITHSPACES[@]}; 
  do echo $P; 
done;

ВЫВОД:

/media/4EC75/'Documents\
and\
Settings'/.
/media/4EC75/'electronic\
claims'/.
/media/4EC75/'billing\
statements'/.

Поэтому, когда это передается в rsync, он не распознает ни одну из папок SOURCE. Я не хочу делать глобальные копии, потому что должно быть ясно, что именно предназначалось для резервного копирования. Я также пробовал разделять имена папок запятыми и двоеточиями, но это тоже не сработало. Как лучше всего с этим справиться? Перейти на Perl или Python? Пожалуйста, не говорите мне использовать robocopy.exe, поскольку я использовал его в течение многих лет и обнаружил, что он настолько сильно отличается между версиями Windows, что он менее надежен. Кроме того, я никогда не вернусь в Windows.

TAG = spaceinfolderfilenames

Сценарий оболочки должен быть:

SOURCEWITHSPACES=( "${PREFIX}/Documents and Settings/." "${PREFIX}/electronic claims/."  "${PREFIX}/billing statements/." )
for P in "${SOURCEWITHSPACES[@]}";
    do echo "$P";
done