4343brlog " INFO" " MinIO:"
4444brlog " INFO" " Tenant name: $TENANT_NAME "
4545
46+ WD_VERSION=" $( get_version) "
4647BACKUP_FILE=${BACKUP_FILE:- " minio_$( date " +%Y%m%d_%H%M%S" ) .tar.gz" }
48+ brlog " DEBUG" " WD_VERSION: $WD_VERSION "
49+ brlog " DEBUG" " BACKUP_FILE: $BACKUP_FILE "
4750
4851MINIO_ARCHIVE_OPTION=" ${MINIO_ARCHIVE_OPTION-$DATASTORE_ARCHIVE_OPTION } "
4952if [ -n " ${MINIO_ARCHIVE_OPTION} " ] ; then
5053 read -a MINIO_TAR_OPTIONS <<< ${MINIO_ARCHIVE_OPTION}
5154else
5255 MINIO_TAR_OPTIONS=(" " )
5356fi
57+ brlog " DEBUG" " MINIO_TAR_OPTIONS: ${MINIO_TAR_OPTIONS[@]} "
5458VERIFY_ARCHIVE=${VERIFY_ARCHIVE:- true}
5559VERIFY_DATASTORE_ARCHIVE=${VERIFY_DATASTORE_ARCHIVE:- $VERIFY_ARCHIVE }
5660
@@ -61,6 +65,53 @@ rm -rf ${TMP_WORK_DIR}
6165mkdir -p " ${TMP_WORK_DIR} /${MINIO_BACKUP_DIR} "
6266mkdir -p " ${BACKUP_RESTORE_LOG_DIR} "
6367
68+ if [ $( compare_version " ${WD_VERSION} " " 5.2.1" ) -ge 0 ] ; then
69+ brlog " DEBUG" " Using aws s3 cli for WD ${WD_VERSION} "
70+
71+ # Prepare s3 pod.
72+ launch_s3_pod
73+ brlog " DEBUG" " S3 pod: ${POD} "
74+ BACKUP_RESTORE_DIR_IN_POD=" /tmp/backup-restore-workspace"
75+ S3_BACKUP_DIR=" s3_backup"
76+ S3_BACKUP=" ${MINIO_BACKUP} " # For backword compatibility.
77+ _oc_cp " ${SCRIPT_DIR} /src" ${POD} :${BACKUP_RESTORE_DIR_IN_POD} / ${OC_ARGS}
78+ _oc_cp " ${SCRIPT_DIR} /lib" ${POD} :${BACKUP_RESTORE_DIR_IN_POD} / ${OC_ARGS}
79+ _oc_cp " ${SCRIPT_DIR} /src/s3-backup-restore-in-pod.sh" " ${POD} :${BACKUP_RESTORE_DIR_IN_POD} /s3-backup-restore-in-pod.sh" ${OC_ARGS}
80+
81+ if [ " ${COMMAND} " = " restore" ] ; then
82+ brlog " INFO" " Transferring backup data ${BACKUP_FILE} into ${POD} ..."
83+ kube_cp_from_local ${POD} " ${BACKUP_FILE} " " ${BACKUP_RESTORE_DIR_IN_POD} /${S3_BACKUP_DIR} /${S3_BACKUP} " ${OC_ARGS}
84+ fi
85+
86+ # Run the backup/restore script.
87+ brlog " INFO" " Running backup restore script in s3 pod ..."
88+ # TODO this takes a while without logging any message at stdout.
89+ run_cmd_in_pod ${POD} \
90+ " ${BACKUP_RESTORE_DIR_IN_POD} /s3-backup-restore-in-pod.sh ${COMMAND} --log-level ${BACKUP_RESTORE_LOG_LEVEL} --backup-dir ${BACKUP_RESTORE_DIR_IN_POD} /${S3_BACKUP_DIR} --file ${S3_BACKUP} " \
91+ ${OC_ARGS}
92+ result=$( get_last_cmd_result_in_pod)
93+ brlog " DEBUG" " s3 br script result: ${result} "
94+
95+ if [ " ${COMMAND} " = " backup" ] ; then
96+ brlog " INFO" " Transferring backup data"
97+ kube_cp_to_local ${POD} " ${BACKUP_FILE} " " ${BACKUP_RESTORE_DIR_IN_POD} /${S3_BACKUP_DIR} /${S3_BACKUP} " ${OC_ARGS}
98+ if " ${VERIFY_DATASTORE_ARCHIVE} " && brlog " INFO" " Verifying backup archive" && ! tar " ${MINIO_TAR_OPTIONS[@]} " -tf ${BACKUP_FILE} & > /dev/null ; then
99+ brlog " ERROR" " Backup file is broken, or does not exist."
100+ exit 1
101+ fi
102+ fi
103+
104+ # Cleanup.
105+ oc ${OC_ARGS} exec ${POD} -- bash -c " cd ${BACKUP_RESTORE_DIR_IN_POD} ; ls | xargs rm -rf"
106+ oc ${OC_ARGS} delete -f " ${S3_JOB_FILE} "
107+ rm -rf ${TMP_WORK_DIR}
108+ if [ -z " $( ls tmp) " ] ; then
109+ rm -rf tmp
110+ fi
111+ brlog " INFO" " Done"
112+ exit 0
113+ fi
114+
64115if " ${BACKUP_RESTORE_IN_POD} " ; then
65116 BACKUP_RESTORE_DIR_IN_POD=" /tmp/backup-restore-workspace"
66117 launch_s3_pod
@@ -128,9 +179,9 @@ if [ "${COMMAND}" = "backup" ] ; then
128179 brlog " INFO" " Start backup minio"
129180 brlog " INFO" " Backup data..."
130181 start_minio_port_forward
131- " ${MC} " " ${MC_OPTS[@]} " --quiet config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
182+ mc_set_alias
132183 EXCLUDE_OBJECTS=$( cat " ${SCRIPT_DIR} /src/minio_exclude_paths" )
133- if [ $( compare_version " $( get_version ) " " 4.7.0" ) -ge 0 ] ; then
184+ if [ $( compare_version " ${WD_VERSION} " " 4.7.0" ) -ge 0 ] ; then
134185 EXCLUDE_OBJECTS+=$' \n '
135186 EXCLUDE_OBJECTS+=" $( cat " ${SCRIPT_DIR} /src/mcg_exclude_paths" ) "
136187 fi
@@ -192,7 +243,7 @@ if [ "${COMMAND}" = "restore" ] ; then
192243 tar " ${MINIO_TAR_OPTIONS[@]} " -xf ${BACKUP_FILE} -C ${TMP_WORK_DIR} /${MINIO_BACKUP_DIR}
193244 brlog " INFO" " Restoring data..."
194245 start_minio_port_forward
195- " ${MC} " " ${MC_OPTS[@]} " --quiet config host add wdminio ${S3_ENDPOINT_URL} ${S3_ACCESS_KEY} ${S3_SECRET_KEY} > /dev/null
246+ mc_set_alias
196247 for bucket_path in " ${TMP_WORK_DIR} /${MINIO_BACKUP_DIR} " /*
197248 do
198249 bucket=" $( basename " ${bucket_path} " ) "
0 commit comments