diff --git a/extra/mariabackup/backup_copy.cc b/extra/mariabackup/backup_copy.cc
index 156e0b20e7c..369336595cb 100644
--- a/extra/mariabackup/backup_copy.cc
+++ b/extra/mariabackup/backup_copy.cc
@@ -796,6 +796,12 @@ datafile_copy_backup(const char *filepath, uint thread_n)
 	}
 
 	if (filename_matches(filepath, ext_list)) {
+		MY_STAT		mystat;
+		my_stat(filepath, &mystat, 0);
+		if (mystat.st_ctime < incremental_foo) {
+			msg_ts("[%02u] Skipping %s.\n", thread_n, filepath);
+			return(true);
+		}
 		return copy_file(ds_data, filepath, filepath, thread_n);
 	}
 
diff --git a/extra/mariabackup/backup_mysql.cc b/extra/mariabackup/backup_mysql.cc
index 6f425e9419f..618855ddc8d 100644
--- a/extra/mariabackup/backup_mysql.cc
+++ b/extra/mariabackup/backup_mysql.cc
@@ -933,6 +933,7 @@ lock_tables(MYSQL *connection)
 		stop_query_killer();
 	}
 
+	metadata_foo = (int)time(NULL);
 	return(true);
 }
 
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index c0c63f521c9..4935a4ae5a1 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -130,7 +130,9 @@ lint io_ticket;
 os_event_t wait_throttle = NULL;
 os_event_t log_copying_stop = NULL;
 
+char *xtrabackup_incremental_foo = NULL;
 char *xtrabackup_incremental = NULL;
+time_t incremental_foo;
 lsn_t incremental_lsn;
 lsn_t incremental_to_lsn;
 lsn_t incremental_last_lsn;
@@ -207,6 +209,7 @@ char*	log_ignored_opt				= NULL;
 #define XTRABACKUP_METADATA_FILENAME "xtrabackup_checkpoints"
 char metadata_type[30] = ""; /*[full-backuped|log-applied|
 			     full-prepared|incremental]*/
+time_t metadata_foo = 0;
 lsn_t metadata_from_lsn = 0;
 lsn_t metadata_to_lsn = 0;
 lsn_t metadata_last_lsn = 0;
@@ -466,6 +469,7 @@ enum options_xtrabackup
   OPT_XTRA_USE_MEMORY,
   OPT_XTRA_THROTTLE,
   OPT_XTRA_LOG_COPY_INTERVAL,
+  OPT_XTRA_INCREMENTAL_FOO,
   OPT_XTRA_INCREMENTAL,
   OPT_XTRA_INCREMENTAL_BASEDIR,
   OPT_XTRA_EXTRA_LSNDIR,
@@ -604,6 +608,9 @@ struct my_option xb_client_options[] =
   {"extra-lsndir", OPT_XTRA_EXTRA_LSNDIR, "(for --backup): save an extra copy of the xtrabackup_checkpoints file in this directory.",
    (G_PTR*) &xtrabackup_extra_lsndir, (G_PTR*) &xtrabackup_extra_lsndir,
    0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+  {"incremental-foo", OPT_XTRA_INCREMENTAL_FOO, "foo",
+   (G_PTR*) &xtrabackup_incremental_foo, (G_PTR*) &xtrabackup_incremental_foo,
+   0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
   {"incremental-lsn", OPT_XTRA_INCREMENTAL, "(for --backup): copy only .ibd pages newer than specified LSN 'high:low'. ##ATTENTION##: If a wrong LSN value is specified, it is impossible to diagnose this, causing the backup to be unusable. Be careful!",
    (G_PTR*) &xtrabackup_incremental, (G_PTR*) &xtrabackup_incremental,
    0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
@@ -1805,6 +1812,9 @@ xtrabackup_read_metadata(char *filename)
 		r = FALSE;
 		goto end;
 	}
+	if (fscanf(fp, "foo = %d\n", &metadata_foo) != 1) {
+		metadata_foo = 0;
+	}
 	/* Use UINT64PF instead of LSN_PF here, as we have to maintain the file
 	format. */
 	if (fscanf(fp, "from_lsn = " UINT64PF "\n", &metadata_from_lsn)
@@ -1842,11 +1852,13 @@ xtrabackup_print_metadata(char *buf, size_t buf_len)
 	format. */
 	snprintf(buf, buf_len,
 		 "backup_type = %s\n"
+		 "foo = %d\n"
 		 "from_lsn = " UINT64PF "\n"
 		 "to_lsn = " UINT64PF "\n"
 		 "last_lsn = " UINT64PF "\n"
 		 "recover_binlog_info = %d\n",
 		 metadata_type,
+		 metadata_foo,
 		 metadata_from_lsn,
 		 metadata_to_lsn,
 		 metadata_last_lsn,
@@ -6554,6 +6566,12 @@ int main(int argc, char **argv)
 			    "incremental option.\n", xtrabackup_incremental);
 			exit(EXIT_FAILURE);
 		}
+		if (xtrabackup_incremental_foo) {
+			struct tm tm;
+			if (strptime(xtrabackup_incremental_foo, "%s", &tm)) {
+				incremental_foo = mktime(&tm);
+			}
+		}
 	} else if (xtrabackup_backup && xtrabackup_incremental_basedir) {
 		char	filename[FN_REFLEN];
 
diff --git a/extra/mariabackup/xtrabackup.h b/extra/mariabackup/xtrabackup.h
index 3b2a25d451b..644cdb3c34b 100644
--- a/extra/mariabackup/xtrabackup.h
+++ b/extra/mariabackup/xtrabackup.h
@@ -49,6 +49,7 @@ typedef struct {
 
 /* value of the --incremental option */
 extern lsn_t incremental_lsn;
+extern time_t incremental_foo;
 
 extern char		*xtrabackup_target_dir;
 extern char		*xtrabackup_incremental_dir;
@@ -65,9 +66,11 @@ extern lsn_t checkpoint_lsn_start;
 
 extern xb_page_bitmap *changed_page_bitmap;
 
+extern char		*xtrabackup_incremental_foo;
 extern char		*xtrabackup_incremental;
 extern my_bool		xtrabackup_incremental_force_scan;
 
+extern time_t		metadata_foo;
 extern lsn_t		metadata_from_lsn;
 extern lsn_t		metadata_to_lsn;
 extern lsn_t		metadata_last_lsn;
