diff --git a/lib/tasks/server_recordings_sync.rake b/lib/tasks/server_recordings_sync.rake
index c8621a3f3d5f5905b4f459bee6a0e42af416756f..c74260742d5aad4ce014b5dde5f1ab39dba084f0 100644
--- a/lib/tasks/server_recordings_sync.rake
+++ b/lib/tasks/server_recordings_sync.rake
@@ -25,7 +25,15 @@ task :server_recordings_sync, %i[provider] => :environment do |_task, args|
     meeting_ids = rooms.pluck(:meeting_id)
 
     recordings = BigBlueButtonApi.new(provider: args[:provider]).get_recordings(meeting_ids:)
+
+    # Skip the entire batch if the first and last recordings exist
+    if Recording.exists?(record_id: recordings[:recordings][0][:recordID]) && Recording.exists?(record_id: recordings[:recordings][-1][:recordID])
+      next
+    end
+
     recordings[:recordings].each do |recording|
+      next if Recording.exists?(record_id: recording[:recordID])
+
       RecordingCreator.new(recording:).call
       success 'Successfully migrated Recording:'
       info "RecordID: #{recording[:recordID]}"