diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index 863e91204552b8f760483b74dd19c80f16ca7885..d0269a98ded5e89a9297c8c40db06400d4bbd231 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -60,6 +60,8 @@ endif()
 
 find_program(CURL_TOOL_PATH curl DOC "The curl-tool")
 
+find_program(S3CMD_TOOL_PATH s3cmd DOC "S3cmd tool for uploading to Amazon S3")
+
 ######################
 ### Find libraries ###
 ######################
diff --git a/scripts/cmake/test/Data.cmake b/scripts/cmake/test/Data.cmake
index 09ef843c63b1fe2a41fd9cd130ee963d805cb66a..7cbdb55e4312d1d4f7e43bc8cd6f1c93b50275e6 100644
--- a/scripts/cmake/test/Data.cmake
+++ b/scripts/cmake/test/Data.cmake
@@ -1,10 +1,12 @@
 include(ExternalData)
 
+set(ExternalData_LOCAL_FOLDER ogs6-data)
+
 set(ExternalData_OBJECT_STORES "${ExternalData_OBJECT_STORES_DEFAULT}" CACHE STRING
 	"Semicolon-separated list of local directories holding test data files in the layout %(algo)/%(hash).")
 mark_as_advanced(ExternalData_OBJECT_STORES)
 if(NOT ExternalData_OBJECT_STORES)
-	set(ExternalData_OBJECT_STORES "${CMAKE_SOURCE_DIR}/../ogs6-data")
+	set(ExternalData_OBJECT_STORES "${CMAKE_SOURCE_DIR}/../${ExternalData_LOCAL_FOLDER}")
 	file(MAKE_DIRECTORY "${ExternalData_OBJECT_STORES}")
 endif()
 
@@ -12,7 +14,13 @@ set(ExternalData_SOURCE_ROOT ${CMAKE_SOURCE_DIR}/Tests/Data)
 set(ExternalData_BINARY_ROOT ${CMAKE_BINARY_DIR}/Tests/Data)
 set(ExternalData_LINK_CONTENT MD5)
 
-set(ExternalData_URL_TEMPLATES "http://www.opengeosys.org/images/dev/%(algo)/%(hash)")
+# Amazon S3 config
+set(ExternalData_S3_Bucket opengeosys)
+
+set(ExternalData_URL_TEMPLATES
+	"http://www.opengeosys.org/images/dev/%(algo)/%(hash)"
+	"http://${ExternalData_S3_Bucket}.s3.amazonaws.com/${ExternalData_LOCAL_FOLDER}/%(algo)/%(hash)"
+)
 
 add_custom_target(
 	move-data
@@ -24,12 +32,20 @@ add_custom_target(
 	VERBATIM
 )
 
+if(S3CMD_TOOL_PATH)
+	add_custom_target(
+		upload-data
+		COMMAND ${S3CMD_TOOL_PATH} sync --acl-public --skip-existing --no-check-md5
+			${CMAKE_SOURCE_DIR}/../${ExternalData_LOCAL_FOLDER} s3://${ExternalData_S3_Bucket}
+	)
+endif()
+
 if(HOSTNAME STREQUAL "envinf1.eve.ufz.de")
 	add_custom_target(
 		sync-data
 		COMMAND ${CMAKE_COMMAND} -E copy_directory
-		${CMAKE_SOURCE_DIR}/../ogs6-data
-		/data/ogs/ogs6-data
+		${CMAKE_SOURCE_DIR}/../${ExternalData_LOCAL_FOLDER}
+		/data/ogs/${ExternalData_LOCAL_FOLDER}
 	)
 	if(CURL_TOOL_PATH)
 		add_custom_command(