diff --git a/lib/tasks/servers_recordings_sync.rake b/lib/tasks/servers_recordings_sync.rake
new file mode 100644
index 0000000000000000000000000000000000000000..c8621a3f3d5f5905b4f459bee6a0e42af416756f
--- /dev/null
+++ b/lib/tasks/servers_recordings_sync.rake
@@ -0,0 +1,36 @@
+# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
+#
+# Copyright (c) 2022 BigBlueButton Inc. and by respective authors (see below).
+#
+# This program is free software; you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free Software
+# Foundation; either version 3.0 of the License, or (at your option) any later
+# version.
+#
+# Greenlight is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License along
+# with Greenlight; if not, see <http://www.gnu.org/licenses/>.
+
+# frozen_string_literal: true
+
+desc 'Server Recordings sync with BBB server'
+
+task :server_recordings_sync, %i[provider] => :environment do |_task, args|
+  args.with_defaults(provider: 'greenlight')
+
+  Room.includes(:user).select(:id, :meeting_id).with_provider(args[:provider]).in_batches(of: 25) do |rooms|
+    meeting_ids = rooms.pluck(:meeting_id)
+
+    recordings = BigBlueButtonApi.new(provider: args[:provider]).get_recordings(meeting_ids:)
+    recordings[:recordings].each do |recording|
+      RecordingCreator.new(recording:).call
+      success 'Successfully migrated Recording:'
+      info "RecordID: #{recording[:recordID]}"
+    rescue StandardError => e
+      err "Unable to migrate Recording:\nRecordID: #{recording[:recordID]}\nError: #{e}"
+    end
+  end
+end