@@ -144,4 +144,69 @@ if [ -z "$supported" ]; then
144
144
exit 1
145
145
fi
146
146
147
+ if [[ " $CALLING_SCRIPT " == " ghe-backup" ]]; then
148
+ # Bring in the requirements file
149
+ min_rsync=" "
150
+ min_openssh=" "
151
+ min_jq=" "
152
+ # shellcheck source=share/github-backup-utils/requirements.txt
153
+ . " $( dirname " ${BASH_SOURCE[0]} " ) /../share/github-backup-utils/requirements.txt"
154
+
155
+ # source disk size file
156
+ # shellcheck source=share/github-backup-utils/ghe-rsync-size.sh
157
+ . " $( dirname " ${BASH_SOURCE[0]} " ) /../share/github-backup-utils/ghe-rsync-size.sh"
158
+
159
+ # Display dir requirements for repositories and mysql
160
+ echo " Checking host for sufficient space for a backup..." 1>&2
161
+ available_space=$( df -B 1k $GHE_DATA_DIR | awk ' END{printf "%.0f", $4 * 1024}' )
162
+ printf " Available space: %d MB. We recommend allocating at least 5x the amount of storage allocated to the primary GitHub appliance for historical snapshots and growth over time.\n" " $(( available_space / 1024 ** 2 )) " 1>&2
163
+
164
+ repos_disk_size=$( transfer_size repositories /tmp)
165
+ pages_disk_size=$( transfer_size pages /tmp)
166
+ es_disk_size=$( transfer_size elasticsearch /tmp)
167
+ stor_disk_size=$( transfer_size storage /tmp)
168
+ minio_disk_size=$( transfer_size minio /tmp)
169
+ mysql_disk_size=$( transfer_size mysql /tmp)
170
+ actions_disk_size=$( transfer_size actions /tmp)
171
+ mssql_disk_size=$( transfer_size mssql /tmp)
172
+
173
+ # min_disk_req=$(( $(echo "$repos_disk_size" | awk '{printf "%.0f", $1}') + $(echo "$pages_disk_size" | awk '{printf "%.0f", $1}') + $(echo "$es_disk_size" | awk '{printf "%.0f", $1}') + $(echo "$stor_disk_size" | awk '{printf "%.0f", $1}') + $(echo "$minio_disk_size" | awk '{printf "%.0f", $1}') + $(echo "$mysql_disk_size" | awk '{printf "%.0f", $1/2}') + $(echo "$actions_disk_size" | awk '{printf "%.0f", $1}') + $(echo "$mssql_disk_size" | awk '{printf "%.0f", $1}') ))
174
+ min_disk_req=$(( $(echo "$repos_disk_size ") + $(echo "$pages_disk_size ") + $(echo "$es_disk_size ") + $(echo "$stor_disk_size ") + $(echo "$minio_disk_size ") + $(echo "$mysql_disk_size ") + $(echo "$actions_disk_size ") + $(echo "$mssql_disk_size ") ))
175
+ echo -e " ### Data Transfer Sizes \nrepositories: $repos_disk_size \npages: $pages_disk_size \nelasticsearch: $es_disk_size \nstorage: $stor_disk_size \nminio: $minio_disk_size \nmysql: $mysql_disk_size \nactions: $actions_disk_size \nmssql: $mssql_disk_size " 1>&2
176
+ printf " min_disk_required for this backup is at least %d MB\n" " $(( min_disk_req / 1024 ** 2 )) " 1>&2
177
+
178
+ if [[ $available_space -lt $min_disk_req ]]; then
179
+ echo " There is not enough disk space for the backup. Please allocate more space and continue." 1>&2
180
+ exit 1
181
+ fi
182
+
183
+ # Check rsync, openssh & jq versions
184
+ rsync_version=$( rsync --version | grep ' version' | awk ' {print $3}' )
185
+ if awk " BEGIN {exit !($rsync_version < $min_rsync )}" & > /dev/null; then
186
+ echo " rsync version $rsync_version in backup-host does not meet minimum requirements." 1>&2
187
+ echo " Please make sure you have the minimum required version of rsync: $min_rsync installed" 1>&2
188
+ exit 1
189
+ else
190
+ echo " rsync ${rsync_version} >= required ($min_rsync )" 1>&2
191
+ fi
192
+
193
+ ssh_version=$( ssh -V 2>&1 | awk ' {print $1}' | grep -oPm 1 ' [\d\.]+' | head -1)
194
+ if awk " BEGIN {exit !($ssh_version < $min_openssh )}" & > /dev/null; then
195
+ echo " openSSH version $ssh_version in backup-host does not meet minimum requirements." 1>&2
196
+ echo " Please make sure the minimum required version of openSSH: $min_openssh is installed" 1>&2
197
+ exit 1
198
+ else
199
+ echo " openSSH ${ssh_version} >= required ($min_openssh )" 1>&2
200
+ fi
201
+
202
+ jq_version=$( jq --version | awk -F\- ' {print $2}' )
203
+ if awk " BEGIN {exit !($jq_version < $min_jq )}" & > /dev/null; then
204
+ echo " jq version $jq_version in backup-host does not meet minimum requirements." 1>&2
205
+ echo " Please make sure you have the minimum required version of jq: $min_jq installed" 1>&2
206
+ exit 1
207
+ else
208
+ echo " jq ${jq_version} >= required ($min_jq )" 1>&2
209
+ fi
210
+ fi
211
+
147
212
echo " Connect $hostname :$port OK (v$version )"
0 commit comments