1) Существует много проверок ошибок, которые вы можете сделать, чтобы сделать этот скрипт более устойчивым: проверить наличие и выполнить состояние внешних исполняемых файлов (rsync, id, date, dirname и т. Д.), Проверить выходные данные rsync ( с помощью [0 -ne $?]; затем), отправьте эхо-запрос на удаленный компьютер, чтобы убедиться, что он находится в сети, убедитесь, что у пользователя, для которого выполняется резервное копирование, есть домашний каталог на локальном компьютере, проверьте, чтобы сделать убедитесь, что в каталоге назначения достаточно места для rsync и т. д.
2) команда mount выглядит нормально, вы хотите попробовать монтировать только для чтения?
3) Зависит от количества пользователей и размера резервной копии. Для небольших резервных копий домашний каталог, вероятно, в порядке, но если резервные копии большие, особенно если у вас может быть недостаточно дискового пространства, было бы неплохо выделить специальное место для резервирования.
4) Зависит от того, какова цель резервного копирования. По моему опыту есть пять видов вещей, которые люди резервируют: пользовательские данные, системные данные, пользовательские конфигурации, системные конфигурации, целые диски или файловые системы. Существует ли отдельная системная задача, которая выполняет резервное копирование системных данных и конфигураций?
5) Какие другие задачи выполняются во время резервного копирования? Если резервное копирование выполняется автоматически, скажем, в 1:00, могут быть запланированы другие задачи с интенсивным использованием системы на то же время. Какова ваша типичная пропускная способность для других видов данных?
Вы выполняете проверку массива переменных, не являющихся массивами.
Используйте переменную для указания удаленного компьютера.
# Remote machine
declare remote_machine="192.168.0.100"
# Specify windows shares array
declare -a smb_shares=([0]="//$remote_machine/myFiles"
[1]="//$remote_machine/otherFiles" )
# Specify the last path component of the directory name to backup shares
# content into
declare -a smb_share_ids=( [1]="blacksmith" [2]="tanner")
таким образом, вы можете
ping -c 1 $remote_machine
if [ 0 -ne $? ] ; then
echo "ping on $remote_machine Failed, exiting..."
exit 1
fi
Если rsync_src используется только для этого макета, вы можете попробовать
mnt_dir="/mnt"
rsync_src=`mktemp -d -p $mnt_dir`
и я бы сделал этот каталог перед циклом for, иначе вы создаете и уничтожаете его для каждого каталога, для которого вы создаете резервную копию.