diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index 14d7c5821c7..344e186e66a 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -2344,12 +2344,25 @@ xtrabackup_copy_datafile(fil_node_t* node, uint thread_n)
 	else {
 		read_filter = &rf_bitmap;
 	}
+
 	res = xb_fil_cur_open(&cursor, read_filter, node, thread_n);
 	if (res == XB_FIL_CUR_SKIP) {
 		goto skip;
 	} else if (res == XB_FIL_CUR_ERROR) {
 		goto error;
 	}
+	if (xtrabackup_incremental) {
+		if (xb_fil_cur_read(&cursor) == XB_FIL_CUR_EOF || incremental_lsn >= mach_read_from_8(cursor.buf + FIL_PAGE_LSN)) {
+			msg("[%02u] Skipping %s.\n", thread_n, node_name);
+			xb_fil_cur_close(&cursor);
+			return(FALSE);
+		}
+		cursor.buf_read = 0;
+		cursor.buf_npages = 0;
+		cursor.buf_offset = 0;
+		cursor.buf_page_no = 0;
+		cursor.read_filter_ctxt.offset = 0;
+	}
 
 	strncpy(dst_name, cursor.rel_path, sizeof(dst_name));
 
